私はアプリケーションを構築しています。MVVM Light を使用して Silverlight 4 クライアントを作成しています。WCF サービスからデータを取得しています。少なくとも、これは計画です。
WCF サービスでは、アプリケーションで使用する必要がある "エンティティ" を定義しました。Silverlight クライアントで WCF サービスへの参照を追加すると、Visual Studio はクライアント側で、サービス内の属性 [DataContract] でマークされたすべてのクラスを再作成します。
私が知りたいのは、これが悪い習慣であるかどうか、そしてモデルをクライアント内に作成する方が良いかどうかです。私が理解している限り、最初のケースでは、Silverlight クライアントで ViewModel と View のみを作成する必要がありますが、2 番目のケースでは、Silverlight クライアント内で View、ViewModel、および Models を作成し、Models インスタンスにWCF サービスからの値。
ご協力ありがとうございました。
乾杯、G.
アップデート
わかりました、多くのフィードバックを受け取っていないので、私の質問は十分に明確ではないと思います. ただし、これに関する最新情報を提供したいと思います。私が探していた答えは「いいえ! データ転送オブジェクト!」です。
エンティティ クラス (DB テーブルにマップされたもの) を WCF サービスの DataContract として使用することを考えていました。この WCF サービスへの参照をクライアントに追加すると、DataContract で装飾されたすべてのクラスがクライアントにも作成されます。
私の場合の大きな問題は、データ層が Hibernate に基づいていることです。Hibernate は実行時に「データ プロキシ」クラスを頻繁に使用します (Castle Proxy を参照)。さて、これらのデータ プロキシにはシリアライゼーションの問題があることが判明しました。私が理解している限り、最善のアプローチは、「複雑な」エンティティを同様の「より軽量な」クラスにマップするためにデータ転送オブジェクト パターンを採用することです。 (DTO)。
これが他の誰かを助けることができることを願っています。
良い1日を!ジャンルカ。