2011-08-24 5 views
0

나는 4 개의 프로젝트 :
1. 내 프로젝트의 비즈니스 로그인을 정의하는 비즈니스 프로젝트.
2. 계약 인터페이스 및 DTO를 정의하는 서비스 계약 프로젝트.
3. 서비스 구현을 정의하는 서비스 구현 프로젝트.
4. 서비스를 사용하는 svc 파일이있는 웹 응용 프로그램.WCF 계약 도메인을 알고

이론적으로는
가. 계약 프로젝트는 아무도 언급하지 않아야합니다.
B. 서비스 구현은 계약 프로젝트와 도메인을 참조해야합니다.
C. 웹 응용 프로그램은 계약 및 구현 프로젝트 만 참조해야합니다.

나는이 같은 서비스 :

AccoundData GetAccount(AccountTypeEnum type); 

문제는 계약 및 웹 응용 프로그램 도메인에 대한 참조를해야한다 있도록 AccountTypeEnum이 도메인에 정의 된 것입니다 .. 그러나 이것은 우리가 시도하고있는 무슨이다 그래서 ... "도메인"을 아는 계약을 어떻게 막을 수 있습니까?

+3

WCF 계약에는 도메인 객체에서 작동하는 메소드가 있습니다. ** 도메인을 알 수없는 이유는 무엇입니까? **!? !!? –

+0

@marc_s : 계약은 인터페이스 일 뿐이며 구현은 아닙니다. 도메인의 결과는 데이터 전송 개체에 저장됩니다. 따라서 계약서에 왜 도메인을 알고 있어야합니까? 알고있는 경우 프로젝트를 강제 실행하여 도메인도 알 수 있습니다. – Naor

답변

2

이러한 경우 계약서에는 다른 enum/DTO를 사용해야하며 서비스 구현은 contract enum과 domain enum 사이에서 변환되어야합니다.

+0

거기에 서비스와 통신 사이의 각 유형에 대한 DTO를 만드는 다른 솔루션은 없습니까? .. 코드 중복을 고려하지 않니? 열거 형을 변경할 때마다 열거 형의 DTO를 변경해야합니다. – Naor

+0

엄격한 분리를 원하면 응용 프로그램에 추가 작업을해야합니다. 필자는 자동 DTO 생성을위한 도구를 모르고 있습니다. DTO는 작동 요구 사항에 따라 달라야하므로 항상 스스로해야합니다. 열거 형의 경우 생성을 위해 T4 템플릿을 만들 수는 있지만 더 복잡해지기 때문에 수동으로 템플릿을 만듭니다. 추가 작업을하지 않으려면 계약 프로젝트를 서비스 구현 프로젝트와 병합하십시오. –

+0

Enum DTO 생성을 위해 T4 템플릿을 만들려면 어떻게해야합니까? Google에서 검색하려고하지만 T4와 Enum에 대한 정보는 없습니다. – Naor

관련 문제