DTO 를 도메인 개체 에 매핑하는 것과 관련된 많은 질문을 보았지만 그들이 내 질문에 답하지 못했다고 생각했습니다. 이전에 많은 방법을 사용해 왔고 내 의견이 있지만 좀 더 구체적인 것을 찾고 있습니다.
그 상황:
우리는 많은 도메인 객체를 가지고 있습니다. CSLA 모델을 사용하므로 도메인 개체가 매우 복잡 할 수 있고 자체 데이터 액세스가 포함됩니다. 당신은 이것들을 와이어로 전달하고 싶지 않습니다. 우리는 여러 형식 (.Net, JSON 등)으로 데이터를 반환하는 몇 가지 새로운 서비스를 작성할 것입니다. 이를 위해 (그리고 다른 이유들) 우리는 또한 유선상에서 전달할 린 데이터 전송 객체를 생성하고 있습니다.
내 질문은 : DTO와 도메인 개체를 어떻게 연결해야합니까?
첫 번째 반응은 Fowler, DTO 패턴 유형 솔루션 을 사용하는 것 입니다. 나는 이것을 여러 번 보았고 나에게 옳다고 느낀다. 도메인 개체에 DTO에 대한 참조가 없습니다. 도메인 개체에서 DTO를 만들기 위해 외부 엔터티 ( "매퍼"또는 "어셈블러")가 호출됩니다. 일반적으로 도메인 개체 측에는 ORM 이 있습니다. 이것의 단점은 "매퍼"가 실제 상황에 대해 매우 복잡 해지는 경향이 있고 매우 취약 할 수 있다는 것입니다.
또 다른 아이디어는 도메인 개체가 단순한 데이터 개체이기 때문에 DTO를 "포함"하는 것입니다. 도메인 개체 속성은 내부적으로 DTO 속성을 참조하고 요청이있을 경우 DTO를 반환 할 수 있습니다. 나는 이것에 아무런 문제가 없다는 것을 알 수는 있지만 잘못된 것 같습니다. NHibernate 를 사용 하는 사람들 이이 방법을 사용 하는 것으로 보이는 기사를 보았습니다 .
다른 방법이 있습니까? 위의 방법 중 하나를 사용할 가치가 있습니까? 그렇다면 그 이유는 무엇입니까?