1

私はアプリケーションを構築しています。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日を!ジャンルカ。

4

1 に答える 1

0

NhibernateでWCFRIAを見たことがありますか?ただし、質問に答えるために、WCFサービスからエンティティを直接返すことはせず、個人的にDTOを作成します。そして、おそらくそれらのDTOをある種のクライアント側モデルにマッピングします。ですから、RIAを利用できなかった場合は、それを試してみます。

于 2011-02-13T16:42:56.110 に答える