5

새 프로젝트 (asp.net MVC)를 시작하려고하는데 지난 몇 달 동안 배운 DDD 규칙을 적용하고 싶습니다.
내 솔루션 구성 방법을 모르겠습니다.
Nhibernate를 사용하고 싶지만 실험과 같아야하므로 Fluent Nhibernate를 사용하고 싶지 않습니다.
사람들이 동일한 프로젝트에서 모든 것을 유지하는 몇 가지 예를 보았습니다. 다른 사람들은 모든 것을 위해 다른 프로젝트를 만드는 경향이 있습니다. 모델과 저장소를 차별화해야한다고 생각합니까 아니면 동일한 프로젝트에 넣어야합니까?
누군가가 기사 등에 대한 링크를 가지고 있다면 그것은 인정 될 것입니다.
ASP.NET MVC 솔루션 (DDD) 구성 방법

감사

알베르토

+0

asp.net mvc, ddd 및 nhibernate가있는 모든 프로젝트가 일부 "기본"아키텍처에 적합하지 않습니다. 프로젝트를 구성하는 방법은 프로젝트가하는 일에 달려 있습니다. 모든 응용 프로그램마다 단 한 가지만 있습니다. 비즈니스 논리 (이 경우 ddd)와 별도의 프로젝트에 프리젠 테이션 논리 (이 경우에는 asp.net mvc)를 넣습니다. 어떤 종류의 웹 응용 프로그램을 만들고 싶습니까?이 응용 프로그램에서 ddd를 어떻게 사용 하시겠습니까? – Paco

답변

4

개인적으로 각 레이어를 별도의 프로젝트로 나누는 것이 더 좋은 아이디어라고 생각합니다. 모든 레이어를 포함하는 1 개의 큰 ASP.NET MVC 프로젝트가 있으면 얻을 수없는 일이 있습니다.

예를 들어 제품ProductFactory 클래스가 있다고 가정합니다. 제품 개체를 생성하려면 ProductFactory을 통해 처리해야합니다. 이를 위해 생성자를 클래스 으로 만들 수 있습니다.제품ProductFactory가 동일한 어셈블리에 있기 때문에이 방법 ProductFactory 클래스는 제품 클래스를 인스턴스화 할 수 있습니다. 그러나 다른 프로젝트 (즉, ASP.NET MVC 프로젝트)에서 제품 클래스를 인스턴스화하려고하면 컴파일 타임 오류가 발생합니다. 이렇게하면 캡슐화를 향상시킬 수 있습니다. 제품, ProductFactory하고 컨트롤러이 같은 프로젝트에있는 경우, 당신은 여전히 ​​당신의 컨트롤러제품의 생성자를 볼 수

참고. 그러므로 설계자의 설계 결정을 이해하지 못하는 아마추어 개발자는 ProductFactory을 무시하고 제품 개체를 직접 생성 할 수 있습니다.

게다가 하나의 큰 프로젝트가 아니라 작은 프로젝트를 처리해야하기 때문에 각 레이어에 대해 별도의 프로젝트를 수행하면 유지 관리가 쉬워집니다.

+0

감사합니다. Mosh. 최선의 답변 ... 이해할만한 것 :-) – LeftyX

5

Jimmy Bogard (Automapper의 저자)이 결정을 돕는 데 도움이 될 수 그가 어떻게 구조를 자신의 코드에 탁월한 article를 작성했습니다.

적은 수의 별도 어셈블리 및 프로젝트가있는 프로젝트에서 작업했습니다. 개인적으로 선호하는 점은 어셈블리를 더 적게 사용하는 것이 더 쉽기 때문입니다. SOLID와 같은 좋은 코딩 원칙을 사용한다면 2 개 또는 20 개의 어셈블리를 사용하는 것이 중요하지 않습니다.

2

당신의 프로젝트가 얼마나 큰가에 달려 있지만 모델과 저장소에 대한 다른 프로젝트로 갈 것입니다. 제 의견으로는 WEB Mvc 프로젝트의 모델 폴더에 모델의 내용을 유지하는 것은 적합하지 않습니다. 너무 복잡해집니다 :)

도메인 논리 (예 : 사용하려는 NHibernate 또는 다른 ORM)에 기술 특정 요소를 포함시키지 않는 것이 중요합니다. 이것은 일반적으로 소위 반부패 계층을 만드는 것과 같습니다.

저장소 패턴 외에도 저장소에서 오는 데이터를 필터링하기 위해 사양 패턴을 사용하는 것을 고려하십시오.

0

MVC2에는 관심의 분리를 만드는 영역 개념이 있습니다. 나는 아직도 그것이 어떻게 구현되는 것을 좋아하지 않는다. 사실 모든 컨트롤러에 대해 별도의 프로젝트를 만듭니다. 그렇게하면 새로운 프로젝트에서 컨트롤러를 믹스하고 매치 할 수 있습니다. 좋은 예는 모든 로그인 및 사용자 관리 작업을 처리하는 "보안"이라는 프로젝트가 있다는 것입니다. 내가 가지고있는 또 다른 프로젝트는 모든 메시징과 전자 메일을 처리하는 Notification이라고합니다. 이 작업을 수행하기 위해 수행하는 작업은 내가 수행중인 프로젝트에 대한 핵심 프로젝트를 만든 다음 다른 프로젝트의 dll에서 가져오고 내가 가지고있는 모든 뷰와 자바 스크립트를 확보해야한다는 것입니다. 작업.