문제

이 주제에 대해 커뮤니티가 무엇을 느끼는지 궁금합니다. 나는 최근에 nhibernate/wcf 시나리오 (서비스 계층에서 엔터티가 지속됨)와 함께 질문에 들어 왔으며 여기서 잘못된 방향으로 가고 있음을 깨달았습니다.

내 질문은 분명히 웹 서비스 (이 시나리오에서 WCF) 뒤에 지속적인 객체 그래프 (nhibernate, linq ~ sql 등)를 사용할 때 해당 엔터티를 전선 위로 보내는 것을 선호합니까? 아니면 가벼운 DTO (Sans Cyclic References) 세트를 만들겠습니까?

도움이 되었습니까?

해결책

DTOS. 오브젝트 투 객체 매핑에 Automapper를 사용하십시오

다른 팁

나는이 시나리오에 여러 번 여러 번 있었고 양쪽에서 경험을 통해 말할 수 있습니다. 원래 나는 단지 내 단지 내 엔티티를 일련의 실체화하고 그대로 보내고있었습니다. 이것은 기능적 관점에서 잘 작동했지만 그것을 조사할수록 필요한 것보다 더 많은 데이터를 보내고 있다는 것을 깨달았으며 양쪽에서 구현을 변화시키는 능력을 잃어 버렸습니다. 후속 서비스 애플리케이션에서 나는 웹 서비스를 오가는 데이터를 얻는 것이 목적으로 만든 DTO를 만들었습니다.

인터 로프 외에는 와이어 위로 전송되는 모든 필드에 대해 생각해야한다는 것은 필요하지 않거나 더 나쁜 데이터를 보내지 않도록하는 데 매우 도움이됩니다. .

다른 사람들이 언급했듯이 automapper 엔티티가 DTO 매핑을위한 훌륭한 도구입니다.

나는 거의 항상 전선을 전송하고 서버와 클라이언트에서 Richter 엔티티를 사용하기 위해 DTO를 거의 만들었습니다. 클라이언트의 경우 서버에서는 비즈니스 로직을 갖는 동안 일반적인 프리젠 테이션 로직이 있습니다. DTO와 엔터티 간의 매핑은 바보 일 수 있지만 발생해야합니다. Automapperp와 같은 도구가 도움이됩니다.

당신이 묻는다면, 나는 웹 서비스에서 외부 세계로 직렬화 된 엔티티를 보내십니까? 그러면 대답은 확실히 아니오입니다. 그렇게하면 상호 운용성을 최소화 할 것입니다. DTO는 C#, Java, JavaScript 또는 기타 항목을 사용하든 모든 언어로 인스턴스화 할 수있는 '개체'세트를 정의 하여이 문제를 해결하는 데 도움이됩니다.

나는 항상 와이어 위로 nhibernate 객체를 보내는 데 문제가있었습니다. 특히 ActiveRecord 모델을 사용하는 경우. 및/또는 객체에 세션 (Yuck)과 관계가있는 경우. 또 다른 불쾌한 결과는 nhibernate가 방법을 입력 할 때 (당신이 얻을 수 있기 전에) 물체를로드하여 문제를 일으킬 수 있다는 것입니다.

그래서 ... 여기서 메시지를 받으시겠습니까? 문제, 문제 문제 ... DTO는 끝까지

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