WCFサービス用にproxyオブジェクトとしてルックアップオブジェクト/コンポーネントを作成することをお勧めします。これは、いくつかの方法で作業することができますが、最も簡単な私の心に来るには、次のようになります。
- がすべて
Products
エンティティを提供する方法でWCFサービスを実装し、1(製品コードに例えば基点。)
- 実装を要求しました
ProductsProvider
- あなたのビューモデルが(例えば。constructor injection経由)
ProductsProvider
への依存を取るのはそれを呼び出すせ、製品を取得するために、WCFクライアントを使用するコンポーネント
このモデルのキー要素はProductsProvider
です。Products
オブジェクトのキャッシュの一種として機能します。まず、すべての製品(またはその一部、好みに応じて)をWebサービスに要求します。その後、製品を検索する必要があるときはいつでも、プロバイダに質問してください。がどのように製品がどのように扱われるべきかを扱う責任はです。おそらくそれは既にローカルリストに入っていますか?おそらく、更新のためにWebサービスを呼び出す必要がありますか?例:
今
public class ProductsProvider
{
private IList<Product> products;
private IProductsService serviceClient;
public ProductsProvider(IProductsService serviceClient)
{
this.serviceClient = serviceClient;
this.products = serviceClient.GetAllProducts();
}
public Product LookUpProduct(string code)
{
// 1: check if our local list contains product with given code
// 2: if it does not, call this.serviceClient.LookUpProduct
// 3: if service also doesn't know such product:
// throw, return null, report error
}
}
、何これはあなたに与えられることである。
- あなたが唯一の方法やサービスがご
- と呼ばれていると
ProductsProvider
インスタンス
- 優れた柔軟性を持っている必要がありますビューモデルはWCFをまったく処理する必要はありません
編集:
あなたの2番目の質問は。コントロールは必要ないかもしれませんが、Product
エンティティのビューモデルは間違いなく良いアイデアです。