2009-05-19 50 views
2

我正在嘗試爲Web服務考慮正確的設計。實質上,該服務將在多個不同系統中執行客戶端搜索,並返回結果。使用可選部件返回複雜對象的Web服務

現在,客戶可以附加各種信息 - 例如,各種聯繫信息,他們的地址,個人信息。這些信息中的一部分對於從某些系統中檢索可能很複雜,所以如果消費者不打算使用它,我希望他們有某種方式向Web服務表明這一點。

一個顯而易見的方法是針對不同的想要的細節組合有不同的方法 - 但隨着組合的增長,方法的數量也會增加。我看過的另一種方法是在方法調用中添加兩個字符串數組參數,其中一個數組是需要的項目列表(例如,我需要聯繫信息),另一個是可選項目(例如,如果您打算反正他們的名字,你可能還會回報給我)。

第三種方法是添加其他方法來檢索細節。但是如果我需要所有可能的潛在數百個組成結果的客戶的所有細節,那麼這將會增加往返次數。

說實話,我不確定我喜歡上述任何方法。那麼如何設計這樣一個通用的客戶端搜索服務呢?

(CW考慮,因爲有可能不是一個單一的「正確」的答案,但我會等着看什麼樣的答案到達)

回答

3

創建「criteria」對象,並使用它作爲一個參數。這樣的對象應該有一堆屬性來表示你想要的信息。例如「IncludeAddresses」或「IncludeFullContactInformation」。

然後消費者負責將正確的屬性設置爲true,並且所有組合都是可能的。這也將使服務中的代碼更容易完成。您可以簡單地編寫if(criteria.IncludeAddresses){response.Addresses = GetAddresses;}

1

任何非結構化或半結構化數據最好由XML處理。您可以通過字符串傳遞XML數據,或者將其包裝到類中,併爲其添加一些功能。使用XPathNavigator來瀏覽XML。你也可以使用XMLDocument類,儘管它不太好用。無論如何,你當然需要某種類來處理XML內容。

這就是爲什麼XML被髮明 - 處理數據的結構沒有明確定義。

Regards, Maciej

相關問題