2009-04-03 3 views
5

저는 ASP.NET MVC에서 철학을 먼저 이해하려고합니다. 저는 컨트롤러와 뷰가 맡은 역할에 대해 아주 분명하다고 생각합니다.하지만 모델 부분에 대해 다소 혼란 스럽습니다. 일부 소식통은 도메인 모델, 일부는 데이터 모델, 일부는 뷰에 바인딩 된 객체라고 말합니다.MVC의 모델

이 부분은 매우 다른 것들입니다. 그러니 누군가가 이것을 한 번만 치워도 될까요?

답변

9

실제로 물건을 더 선명하게 만들기 위해 추가 레이어를 추가하고 싶습니다. 기본적으로 "모델"은 특정 도메인에 속하는 개체이며, 지속성을 유지하는 방법을 알고 있습니다 (지속성은 도메인의 일부 임).

IMO, ViewModel이라고 부르는 다른 레이어보기에 전달되는 "모델"은 실제로 도메인과 아무 관련이 없습니다 ... 유효성 검사 정보, 사용자 표시 정보,보기에 표시하기위한 조회 목록 값.

나는 모델이의 모델보다, 원자력 발전소의 운영을 관리, 당신이 말에 웹 사이트를 구축하는 경우 즉, 당신은 예를 들어

11

모델은 "응용 프로그램이 작동하는 정보의 도메인 별 표현"입니다. 이는 데이터 모델뿐만 아니라 MVC 패턴보다 낮은 수준이기 때문에 (예를 들어) 데이터를 캡슐화하는 클래스이며이를 통해 처리를 수행 할 수 있습니다. MS에서

스콧 거스리는 his announcement이 정의를 사용하십시오 MVC 기반 응용 프로그램 에서

"모델" 상태를 유지 관리 할 책임이 있습니다 응용 프로그램 의 구성 요소입니다. 종종이 상태는 데이터베이스 내에 으로 유지됩니다. 예를 들어 에는 의 제품 테이블에있는 제품 테이블의 주문 데이터를 나타내는 데 사용되는 의 Product 클래스가있을 수 있습니다.

추가 읽기 :

+0

위키 백과에서 나를 괴롭 히고 있습니다. –

+0

모델이 상태를 유지하기 위해서만 존재하는 경우 누가/무엇을 상태에 조작하고 조작합니다. 나는 당신이 컨트롤러에 대해 말하지 않았 으면 좋겠다. 그렇지 않으면 그들에 대해서도 혼란 스러울 것이다. –

+0

"컨트롤러 : 이벤트 (일반적으로 사용자 작업)를 처리하고 이에 응답하며 간접적으로 모델의 변경 사항을 호출 할 수 있습니다." 사용자가 액션을 호출하면 모델이 변경되어 뷰를 업데이트합니다. – crb

2

.

챕터 중 하나

: 페이지 용어 "모델" 의 데이터 애플리케이션뿐만 아니라 해당 도메인 로직을 나타내는 객체를 참조하는 모델 - 뷰 - 제어기 틀 26

그 유효성 확인 및 비즈니스 규칙 을 통합합니다. 이 모델은 여러면에서 MVC 기반 응용 프로그램의 "핵심"이며, 나중에 볼 수 있듯이 은 기본적으로 그 동작을 유도합니다.

유용 할 것입니다.

0

:-) 데있어 단절 생각 공장, 현재 운영 매개 변수 (온도 등)에 대한 속성, 전력 생산 시작/중지 방법 등이 있습니다. 음 ...이 경우 모델은 실제 플랜트와 격리 된 모드의 투영이지만, 아이디어를 얻었다.

4

도메인 모델이라고 할 때 귀하의 조언은 정확합니다. 대부분의 경우 데이터 모델과 매우 밀접하게 정렬됩니다.

도메인 모델과 데이터 모델이 다른 점은 도메인 모델이 도메인의 특정 제약 조건 및 규칙을 추가하는 반면 데이터 모델은 비교적 정적 인 내용 (콘텐츠가 아님)입니다. 예를 들어, 내 데이터 모델 (데이터베이스)에서 나는 혈압을 smallints (수축기 및 이완기)로 표시합니다. 내 도메인 모델에서 두 개의 판독 값 각각에 대해 값을 보유하고 허용 가능한 값의 범위에 대한 추가 제한을 부과하는 "혈압 판독"개체가 있습니다 (예 : 수축기 범위가 smallints의 범위보다 훨씬 작음)). 또한이 값에 대한 질적 판단을 추가합니다 (150/90의 BP는 "높음").

문제 도메인의 이러한 측면을 추가하면 도메인 모델이 단순한 데이터 모델 이상이됩니다. 일부 도메인 (예 : 완전한 객체 지향 데이터 모델로 렌더링 된 것이 좋으며 관계형 모델에서 제대로 매핑되지 않는 도메인)에서는 두 가지가 상당히 다른 것으로 나타납니다. 그러나, 내가 만든 모든 시스템은 매우 중첩되어 있습니다. 사실, 저장 프로 시저, 사용자 정의 형식 등을 통해 데이터 모델 자체에 상당한 수의 도메인 제약 조건을 적용하는 경우가 종종 있습니다.

관련 문제