1
我有一個Web服務,它提供了一個接口來查詢數據。我正在使用MVVM編寫WPF應用程序。我正在創建一個我的View Models可以用來檢索模型的存儲庫。需要時,存儲庫將調用Web服務來獲取數據。WPF MVVM - 存儲庫模式查詢
我會要求各種在我的資源庫中查找方法,該方法根據各種標準找到數據,而不僅僅是像'Id'這樣的一個標準。
以我庫,我已經創建一個查找方法,它接受規格作爲輸入
void IList<MyData> Find (ISpecification spec)
其中基本ISpecification接口是
public interface ISpecification<T>
{
bool IsSatisfiedBy(T candidate);
}
查找方法的高水平的實行將如下
- 第一次搜索■對於符合規範
- 如果發現考生緩存返回候選人名單
- 否則使用該規範/標準來調用Web服務來獲取考生和返回列表
我感到困惑的上面的情況 - 設計規範的正確方法是什麼,以便如果我沒有滿足規範的存儲庫緩存中的數據,我應該能夠從規範中檢索條件並調用通過web方法的Web服務此條件?
我mind-
- 如果我專門找到方法來採取具有性能/指標分析,然後專門倉庫規格有幾件事情 - 規格有緊耦合
- 如果我必須要直接連接到數據庫(我不是),那麼我可以支持一個返回SQL的方法。 LINQ可能是一個選項等
謝謝Jose。我以前沒有用過LINQ。如果我使用LINQ Expression作爲Find函數的參數,那麼現在我的問題將被轉換爲如何將該表達式轉換爲Web Service方法所需的參數?表達式肯定會有助於我的內存緩存/數據收集,但我的主要問題是關於調用Web服務場景。 – byte 2010-07-16 13:36:52
我認爲最簡單的方法就是讓webservice以表達式樹的形式作爲參數,在web服務中實現一個IQueryable(即Linq To SQL),然後在Web服務中向其提供表達式,然後不要不必進行任何分析,只需傳遞一下信息即可。 :) – Jose 2010-07-16 13:59:35
謝謝。問題是我無法修改Web服務。它也可能不是.NET Web服務(可能是unix上的Java或C++)。 所以WebMethod將是類似於 字符串FindMembers(字符串姓氏,int minAge,字符串城市) 其中返回類型是XML作爲字符串 – byte 2010-07-16 14:27:40