일반적인 시나리오입니다. 우리는 구식 XML 웹 서비스 을 내부적으로으로 사용하여 서버 팜과 여러 및 로컬 클라이언트간에 통신합니다. 어떠한 제 3 자도 참여하지 않으며, 우리 자신과 고객이 사용하는 응용 프로그램 만.WCF - 도메인 개체 및 IExtensibleDataObject
우리는 현재 XML WS에서 WCF/객체 기반 모델로의 전환을 숙고하고 있으며 다양한 접근 방식을 실험 해 왔습니다. 그 중 하나는 와이어를 통해 직접 도메인 개체/집계를 전송하여 해당 개체에 대한 DataContract 특성을 호출 할 수 있습니다.
데이터 멤버의 Order 속성을 사용하는 IExtensibleDataObject와 DataContract를 사용하면 간단한 속성 버전 관리 문제에 대처할 수 있습니다 (모든 클라이언트를 제어하고 쉽게 업데이트 할 수 있음을 기억하십시오).
전선을 통해 전송 전용 전용 DTO (Data Transfer Objects)를 사용해야한다는 의견을 계속 듣고 있습니다.
왜? 그렇게 할 이유가 아직도 있습니까? 우리는 서버 측과 클라이언트 측에서 동일한 도메인 모델을 사용합니다. 물론 올바른 것으로 간주 될 때만 컬렉션을 미리 채우고 "필요합니다". 콜렉션 속성은 서비스 위치 지정자 원칙과 IoC를 사용하여 서버 측에서 직접 데이터를 가져 오는 NHibernate 기반 "서비스"와 클라이언트 측 WCF "서비스"클라이언트를 호출하여 WCF 서버 팜과 통신합니다.
그래서 우리는 왜 DTOs를 사용해야합니까? 내 경험 DTO들에서
옙, akmad, 이것들은 내가 가지고있는 생각과 똑같습니다. 적절한 경우 순수한 엔티티를 전송하지만 좀 더 순수한 비즈니스 프로세스 유형 호출을 위해 더 많은 명령 기반 "메시지"형식을 수행하는 방식을 사용합니다. – HenningK