0

MVC5 + DDD + EF6 프로젝트를 시작하고 스켈레톤 솔루션을 만들고 있습니다. 모범 사례/대회에 관한 두 가지 질문이 있습니다.MVC + 도메인 기반 디자인의 폴더 구조

1) 모델이 도메인에 실제로 있기 때문에 MVC 프로젝트의 모델 폴더가 중복 된 것 같습니다. 뷰에 전용 ViewModel이 필요한 경우 ViewModels 폴더가 적절하다고 생각합니다.

각 MVC 영역의 ViewModels 폴더가 적절하며 MVC 프로젝트의 모델 폴더 중 어떤 용도로도 사용할 수 있습니까?

2) 이전 프로젝트에서 우리는 도메인 모델을 "모델"이라고 부르지 만, 일부는 Entity Framework의 용어로 인해 "엔터티"라고 부릅니다.

새로운 프로젝트의 의도는 일부 도메인 모델에서 풍부한 동작을 만드는 것입니다. 단순히 멍청한 DTO (데이터 전송 개체) 일 뿐만이 아닙니다.

도메인 계층 내에서 모델 또는 엔터티라고하는 것이 관례/모범 사례입니까?

답변

4

내 의견은 이것이다 :


1) 현재 1-1 매핑 같은 느낌 때에도 항상 뷰에 대한 뷰 - 모델을 작성하는 경우. (AutoMapper와 같은 것을 사용하면 반복적 인 코딩 작업을 도와 줄 수 있습니다. 그 이유는 도메인과보기가 매우 비슷해 보이기 때문입니다. 그러나 지금부터 6 개월 후에는 필요한 것에 대한 지식을 구축 할 때 도메인에서 많은 변화가있었습니다. 당신의보기. 더 이상 도메인 모델에 1에 1을지도 각 지역의 ViewModels 폴더를 유지하고, 시간에 의해 당신은 재사용 가능한 뷰 모델, 리팩토링이 필요하고 공통 영역으로 이동하지 않습니다.


2) 도메인 항목은 엔티티/모델이 될 수 있습니다.이 항목은 어디에서나 볼 수 있습니다. 엔티티가 코드 항목 또는 엔티티 일 때 팀이 합의하는 한 실제 생활에서 표현하려고하는 것은 ... 모두 괜찮습니다. 유비쿼터스 언어가 개발됨에 따라 일이 쉬워집니다. 도메인이 가능한 한 부유하게 만드는 것에 동의하십시오. 시스템이 커지면 복잡성을 처리하는 데 도움이됩니다. 에릭 에반스 - 도메인 기반 디자인 도서를 테이블에 보관하고 새 프로젝트를 통해 최상의 결과를 얻으십시오.

+0

감사합니다. Eugene, 각 MVC 영역에 모델 폴더가 필요합니까? 나는 그것이 비게 될 것이고, 모든 것은 VIewModels 폴더 아래에있을 것이라고 기대한다. –

+1

필요에 따라 제거하고 ViewModels 폴더를 추가 할 수 있습니다. ** 모델 ** 폴더는 순수하게 ** (M) ** VC –

+1

때문에 존재합니다. 또한 도메인 모델에 공개 매개 변수없는 생성자가 없을 가능성이 있습니까? MVC 모델로 작동해서는 안됩니다. – davenewza

1

원하는 경우 모델 폴더의 이름을 ViewModels로 바꿀 수 있습니다. 아무것도 중단됩니다.

하지만 나는 그대로두고 ViewModels 클라이언트 쪽 개체 만 (녹아웃 또는 비슷한 물건) 호출하는 것을 선호합니다.

레이아웃 된 도메인에서 엔티티 플러더를 선호합니다.

관련 문제