6

ドメインモデルをWCFサービスAPIにプッシュすることを検討しており、このタイプのセットアップでの遅延読み込み手法についていくつか考えてみたいと思います。

このアプローチを取るときに何か提案はありますか?


この手法を実装してアプリにステップインすると、サーバーがリストを返す直前に、遅延読み込みされるはずの各プロパティの取得にヒットします...したがって、読み込みが熱心になります。この問題を説明したり、解決策を提案したりできますか?

編集:XMLIgnore属性を使用できるようですので、シリアル化中には見ら​​れません..まだこれを読んでいます

4

3 に答える 3

4

サービス インターフェイスを介して遅延読み込みを行わないでください。明示的な DTO を定義し、それらを WCF のデータ コントラクトとして使用します。

NHibernate (または他の ORM) を使用して、DTO を構築するために必要なオブジェクトを適切に取得できます。

于 2008-09-02T02:55:22.153 に答える
3

どんなリモーティング アーキテクチャに関しても、制御されていない方法で完全なオブジェクト グラフを "ネットワークに沿って" ロードすることは避ける必要があります (オブジェクトの数が非常に少ない場合を除きます)。

ウィキペディアの記事には、標準的な手法がかなり要約されています (C# も!)。私はゴーストとバリューホルダーの両方を使用しましたが、どちらもうまく機能します。

この種の手法を実装するには、懸念事項を厳密に分離するようにしてください。サーバー上では、サービス コントラクトの実装クラスだけが、データ コントラクトを操作するコードの一部である必要があります。クライアントでは、サービス アクセス レイヤーがプロキシと連携する唯一のコードである必要があります。

このような階層化により、サービスを呼び出す UI レイヤーや呼び出されるビジネス層とは比較的独立して、サービスの実装方法を調整できます。また、単体テストのチャンスも半分になります。

于 2008-08-30T21:16:51.627 に答える
1

REST ベースのもの ( ADO.NET Data Servicesなど) を使用して、クライアント コードに透過的にラップすることができます。

于 2008-09-15T19:06:12.410 に答える