문제

애플리케이션을 만들고 있습니다. MVVM Light의 도움으로 Silverlight 4 클라이언트를 만들고 있습니다. WCF 서비스에서 데이터를 얻고 있습니다. 적어도 이것이 계획입니다.

WCF 서비스에서 응용 프로그램에 사용해야하는 "엔티티"를 정의했습니다. Silverlight 클라이언트에서 내 WCF 서비스에 대한 참조를 추가하면 Visual Studio는 서비스에서 [DataContract] 특성으로 표시된 모든 클래스를 클라이언트 측에서 다시 만듭니다.

내가 알고 싶은 것은 이것이 나쁜 관행인지 그리고 클라이언트 내부에서 모델을 만드는 것이 더 나은지 여부입니다. 내가 이해하는 한, 첫 번째 경우에는 Silverlight 클라이언트에서 ViewModels와 View 만 만들어야하지만 두 번째 경우에는 Silverlight 클라이언트 내부에 View, ViewModels 및 Models를 만들고 Models 인스턴스를 WCF 서비스에서 오는 값.

도움을 주셔서 감사합니다.

건배, G.

업데이트

알겠습니다. 피드백을 많이받지 못해서 질문이 명확하지 않은 것 같습니다. 그러나 이에 대한 업데이트를 제공하고 싶습니다. 제가 찾고 있던 답은 "아니요! 데이터 전송 객체!"입니다.

내 엔터티 클래스 (DB 테이블에 매핑 된 클래스)를 WCF 서비스에서 DataContract로 사용할 생각이었습니다. 클라이언트에서이 WCF 서비스에 대한 참조를 추가하면 클라이언트에서도 DataContract로 장식 된 모든 클래스가 생성되었을 것입니다.

제 경우에 큰 문제는 데이터 레이어가 Hibernate를 기반으로한다는 것입니다. 이는 soemtimes가 "데이터 프록시"클래스의 런타임에 광범위하게 사용합니다 (캐슬 프록시 참조). 음, 이러한 데이터 프록시에 직렬화 문제가 있음이 밝혀졌습니다. 내가 이해하는 한 가장 좋은 방법은 "복잡한"엔터티를 유사하지만 "더 가벼운"클래스에 매핑하기 위해 데이터 전송 개체 패턴을 채택하는 것입니다. (DTO).

다른 사람에게 도움이되기를 바랍니다.

좋은 하루 보내세요! 지안루카

도움이 되었습니까?

해결책

Nhibernate에서 WCF RIA를 살펴 보셨습니까?그래도 질문에 답하기 위해 : WCF 서비스에서 직접 엔터티를 반환하지 않고 개인적으로 DTO를 만들었습니다.그런 다음 이러한 DTO를 일종의 클라이언트 측 모델에 매핑 할 것입니다.그래서 RIA를 활용할 수 없다면 그렇게하려고 노력하고하려고합니다.

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