我建議創建查找對象/組件作爲WCF服務的proxy對象。它可以在幾個方面的工作,但最簡單的來我的腦海裏:
- 與方法來實現WCF服務提供所有
Products
實體,並要求一個(產品代碼如築底。)
- 實施將使用WCF客戶將產品組件,讓我們把它叫做
ProductsProvider
- 您的視圖模型將在
ProductsProvider
依賴(例如,通過constructor injection)
這個模型中的關鍵元素是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
編輯:
至於你的第二個問題。控制可能不是必需的,但具有Product
實體的查看模型絕對是一個好主意。