2017-02-10 1 views
0

내 응용 프로그램은 3 개 프로젝트적절한 방법

  • 도메인

  • ui.web.mvc webservices.webapi

으로 나누어 져 있습니다 웹 서비스를 소비

내부 도메인 2 가지 모델이 있습니다

Car 
Engine 

내 webservices 프로젝트는 데이터를 검색하기 위해 도메인 객체를 참조합니다. mvc 프로젝트가 복잡한 viewmodel 또는 dto를 사용하여 데이터를 webservice에 보내고 webservice가 해당 모델을 도메인 하나에 매핑하면 해당 viewmodel 또는 dto가 두 프로젝트 (webservicesmvc)에 있다고 생각하는 것이 정상입니까?

+0

도메인 개체와 개체를 검색하는 웹 서비스? 이상한 설정. 웹 서비스를 지속성 구현 (즉, 저장소)으로 추상화하지 않는 이유는 무엇입니까? 도메인 객체를 반환하거나 저장해야합니다. 나는 그런 시나리오에서 DTO의 요점을 보지 못했다. 대부분의 def 모델은 퍼시스턴스 계층에 위치하지 않습니다. –

+0

내 저장소가 insde 도메인 프로젝트입니다. 저장소를 별도의 프로젝트로 옮기는 것이 좋습니다. 내보기 모델은 지속 레이어가 아닌 mvc 레이어 안에 있습니다. – user1765862

+0

WS는 무엇을합니까? –

답변

0

enter image description here

는 (그림 없음 다음 MVC도 설치 IoC 컨테이너하기 위해, 구체적인 구현을 참조, 또는 XML 구성을 사용하려면 다음 중 하나를해야합니다) 우선 들어

를, 당신의 MVC 애플리케이션은해야 웹 서비스에 대해 알지 못합니다. 그것은 인터페이스 뒤에 추상화되어야합니다 (Dependency Inversion 원칙).

public HomeController(IRepository repository, IService service) 
{ 
    this.repository = repository; 
    this.service = service; 
} 

내 생각에 도메인 객체에는 지속성 주석도 있습니다. 다른 두 가지 옵션이 a) 빈혈 모델 또는 b) 도메인 모델 인 경우가 가장 많기 때문에 이것이 가장 일반적인 사례입니다. 가정이 정확하다면, Repo와 서비스는 모두 도메인 객체와 함께 작동해야합니다. 네가 언급 한 DTO에 대한 장소가 보이지 않는다.

'패턴'은 간단합니다. 서비스 또는 Repo에서 도메인 객체를 검색하고 비즈니스 로직을 호출 한 다음 서비스/Repo로 다시 전달합니다.