문제

나는 디자인 ASP.NET MVC 를 사용하여 응용 프로그램 양파처 설명에 의해 제프리 팔레르모.

그것은 ASP.NET MVC2.0 프로젝트가 필요한 모든 뷰가 있는 강력한 형식을 사용하여 전념한 보기 모델-우리는 것입니다 통과하지 않는 도메인 모델들을 우리의 전망이다.우리는 AutoMapper 를 사용하여 수행하는 번역--AutoMapper 은 고립 된 인프라,웹를 모르거나 신경 쓰지 않는 AutoMapper 사용하고 있습니다.

현재 저는 정의 IViewModelMapping 인터페이스 웹 프로젝트에서--기 때문에 단순히 이 서비스에 사용되는 것에 의해 컨트롤러와 바로 연결되어 있습니다 그것의 자신의 볼 모델입니다.이 방법은 인터페이스에 액세스할 수 있는 도메인종(에서 핵심)및 모델(Web).

을 제공하기 위해서는 실제 구현 IViewModelMapping 인터페이스,나를 만들었 ObjectMapping 네임스페이스,인프라 프로젝트는 것입니다 분리하는 실제 매핑을 구현하는 인프라의 양파입니다.이렇게,이에 필요한 인프라를 종속 모두에 핵심입니다.

나의 질문은:므로 이러한 프로젝트의 기술적으로 외곽에 양파(에서 동일한 레이어)--중 하나로 프로젝트를 허용하에 종속되어 있는 다른 프로젝트에서는 계층?가 누구나 알 수 있는 모든 잠재적인 문제로 이 디자인은?

대체 디자인 것이 이동하 IViewMapper 인터페이스로 핵심을-하지만이 불가능할 것이기 때문에 코어에 액세스할 수 없 뷰 모델 클래스입니다.할 수도 있습동기 모형으로 핵심이지만,그럼 그들이 속하지 않기 때문에,그들은 특정한 UI 층이다.

제안된 아키텍처는 다음과 같이--알 수 있는 인프라에 의존하고 있는 핵심입니다.웹 고립 된 남아에만 액세스할 수 있는 핵심 비즈니스 논리입니다.

http://www.matthidinger.com/images/onion-arch.png

도움이 되었습니까?

해결책

You are correct that you don't want Infrastructure to depend on UI(Web), but I break that rule sometimes.

I would think instead of IViewModelMapping, create IMapper with method Map(). Then, the interface can have implementations that might have to do with view model mapping, or maybe just regular mapping. Either way, that interface can be in Core because it is not semantically bound to any type of model.

Great graphic. I hope I answered the meat of your question. The overall philosophy of the Onion Architecture is to keep your business logic and model in the middle (Core) of your application and push your dependencies as far outward as possible.

다른 팁

아니요, 언어 팩에 대한 CU가 없습니다.

Web UI 를 계층에 따라 달라질 수 있습니다 인프라는 계층입니다.그러나 그것은 좋은 디자인을 종속성의 웹에서 인프라 레이어입니다.양파처 말 밀어의 종속성으로 멀리 바깥쪽으로 가능합니다.

을 만들 수 있습니다"\Builder"폴더 UI.하나를 추가 인터페이스 파일에서 그것은,예..IBuilder 또는 IMapper 및 선언하는 방법은 다음과 같 ConvertToViewModel 또는 CreateMapping 습니다.당신이 무엇을 좋아합니다.

*Builder **IBuilder.cs-선포하는 방식입니다.**Builder.cs---구현하는 방법,여기에 정의하는 간의 매핑 뷰 모델고 그것에 해당하는 DomainModel(참조에서 핵심층)반환한 적절한 뷰 모델니다 여기에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top