통신 나는 제프리 팔레르모에 의해 기술 된 Onion Architecture를 사용하여 ASP.NET MVC 응용 프로그램을 설계하고있다. 양파 archicecture 종속성 : 인프라 및 웹
그것은이다 나는 모든 뷰가 강하게 전용보기 모델을 사용하여 입력 할 것을 요구하고하는 ASP.NET MVC 2.0 프로젝트 - 우리는 우리의 견해에 도메인 모델을 통과하지 않습니다. 우리는 AutoMapper를 사용하여 번역을 수행하고 있습니다. AutoMapper는 인프라에서 격리되어 있습니다. Web은 AutoMapper가 사용되고 있다는 것을 모르고 있거나 신경 쓰지 않습니다. 이 서비스는 컨트롤러에 의해 사용되는 간단하기 때문에 그것은 자신의 뷰 모델에 직접 액세스 할 수 있습니다 -현재, 나는 웹 프로젝트에서 IViewModelMapping 인터페이스를 정의하고있다. 이렇게하면 인터페이스가 도메인 모델 (코어)과보기 모델 (웹)에 모두 액세스 할 수 있습니다.
IViewModelMapping 인터페이스의 실제 구현을 제공하기 위해 Infrastructure 프로젝트에서 ObjectMapping 네임 스페이스를 만들었습니다. 그러면 실제 매핑 구현을 양파의 인프라로 분리 할 수 있습니다. 이렇게함으로써 Infrastructure는 Core와 Web 모두에 의존해야합니다.
내 질문은 :이 프로젝트의 모두 (같은 층) 양파의 외곽에 기술적 때문에 - 하나 개의 프로젝트는 해당 레이어에서 다른 프로젝트에 대한 종속성을 가질 수? 이 디자인으로 잠재적 인 함정에 주목하는 사람이 있습니까?
대안 설계는 코어에 IViewMapper 인터페이스를 이동하는 것입니다 -하지만 핵심은 뷰 모델 클래스에 액세스 할 수 없기 때문에이 불가능하다. 뷰 모델을 코어로 옮길 수도 있지만, UI 레이어에만 해당되므로 뷰 모델을 코어에 포함시킬 수는 없습니다.
제안 된 아키텍처는 다음과 같습니다. Infrastructure는 Core 및 Web에 종속되어 있습니다. 웹은 고립되어 있으며 핵심 비즈니스 로직 만 이용할 수 있습니다.
http://www.matthidinger.com/images/onion-arch.png
골라서 선택한 마지막 디자인은 무엇입니까? Interestingt 매핑에 대한 몇 가지 클래스 구조로 업데이트 된 다이어그램을 볼 :) –
질문 : _Dependency Resolution Layer_ _Web Layer_에 대한 의존성이 있습니까? _Controllers_가 _Dependency Resolution Layer_에 종속되어서는 안됩니까? – a11smiles