我有一個可以返回多個不同集合的WCF服務。在WCF客戶端中連接返回的對象實例
每個集合中的對象都可以引用其他集合中的對象。例如。我有一系列的訂單和一批顧客。客戶對象包含一系列訂單參考,每個訂單都包含客戶參考。
我想知道人們通常在客戶端如何處理這種事情。據我所見,我的選擇是:
1)讓WCF完整地串行化任何成員對象,不要擔心重複。我知道我可以使用[PreserveReferences]在某種程度上緩解這種情況,但仍然存在大量的重複和不必要的序列化。也就是說,如果我從服務請求客戶對象,它會將客戶所有訂單的所有成員序列化,即使我的訂單集合中已經有客戶端的這些對象。這也意味着我必須小心地按照Id來匹配事物,而不是僅僅比較實例。
2)Serialise Id的實例,而不是實例。這看起來似乎是最明智的做法,但意味着我必須在某些地方將客戶端的這些Id再次變成實例。這帶來了一大堆的問題,以及如何注入所需的存儲庫來完成接線。
3)只需在客戶端的每個地方使用Id,而不是連接實例。這對我來說只是感覺不對,並且離開了OOP的全部。我不必訪問對象上的集合,而必須訪問id的集合,然後通過某個全局存儲庫查找它們。
目前我傾向於2,但我不喜歡這將是串行化混亂。
我應該注意的是,客戶端可能比大多數WCF客戶多了很多狀態,並保持與回調等,以保持其藏品的開放連接到服務,因爲它顯示的是實時數據。
乾杯