1

신청서를 작성 중입니다. MVVM Light의 도움으로 Silverlight 4 클라이언트를 만들었습니다. WCF 서비스에서 데이터를 수집하고 있습니다. 적어도 이것은 계획입니다.모델이 WCF 서비스에만 있거나 클라이언트에 복제본이 필요합니까?

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

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

도움 주셔서 감사합니다.

건배, G.

UPDATE

좋아, 나는 나는 많은 피드백을받지 havent 한 나의 질문은 충분히 명확하다고 생각하지 않습니다. 그러나 이에 대한 업데이트를 제공하고 싶습니다. 내가 찾고 있던 대답은 "No! Data Transfer Objects!"입니다.

WCF 서비스에서 DataContract로 내 엔터티 클래스 (DB 테이블에 매핑 된 클래스)를 사용하려고 생각했습니다. 클라이언트에서이 WCF 서비스에 대한 참조를 추가하면 클라이언트에서 DataContract로 장식 된 모든 클래스가 만들어집니다.

필자의 경우 큰 문제는 데이터 레이어가 "데이터 프록시"클래스의 런타임에 광범위하게 사용되는 Hibernate를 기반으로한다는 것입니다 (Castle Proxy 참조). 음,이 데이터 프록시에 직렬화 문제가 있다는 것이 판명되었습니다. 가장 좋은 방법은 "복잡한"엔티티를 비슷하지만 "더 가벼운"클래스로 매핑하기 위해 데이터 전송 객체 패턴을 채택하는 것입니다. (DTO).

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

좋은 하루 되세요! Gianluca.

답변

0

Nhibernate로 WCF RIA를 보았습니까? 시도하고 질문에 대답 : 나는 WCF 서비스에서 엔티티를 직접적으로 반환하려고하지는 않을 것이므로 개인적으로 DTO를 만들 것입니다. 그리고 나서 아마 그 DTO를 일종의 클라이언트 측 모델에 매핑 할 것입니다. RIA를 활용할 수 없다면 그렇게하려고 노력할 것입니다.

+0

안녕하세요. 예, WCF RIA + FluentNHibernate를 사용하고있었습니다. 내 게시물의 "업데이트"섹션에서 말했듯이 DTO를 인식하고 있으며이를 구현해야합니다. 하지만 EntityFramework 및 RIA 서비스로 전환했다는 것을 인정합니다. –

관련 문제