2011-03-27 74 views
0

我試圖按照SOA方法來實現一些服務。我使用的是WCF,我想知道在操作中處理長列表的最佳方法/實踐是什麼。 例如,我有一個用戶列表返回到UI(桌面客戶端,而不是Web)。 如果我返回每條記錄,那麼列表可能會變得太大而無法從服務傳輸到客戶端,並且可能發生許多錯誤(如超出消息大小或連接丟失)。如何處理SOA中的操作返回大列表

有沒有一種衆所周知的方式來處理這種情況?

非常感謝 亞歷克斯,

+0

應用程序是否需要每次調用時的完整列表? – 2011-03-27 06:21:44

+1

有這樣一種方式:按頁面返回結果。 – 2011-03-28 09:00:08

回答

0

如果你要多少送的一些想法,你可以增加在客戶端的app.config中的郵件大小限制,然後發瘋。但是你不應該無故發送50MB的客戶記錄給每個客戶。

如果用戶一次只能瀏覽其中的一部分,則可以抓取一些記錄,然後在用戶滾動列表時抓取更多記錄。或者,您可以要求用戶提供搜索模式(如前幾個字母),只能抓取這些模式。

+0

你能否回答http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcf? – Lijo 2012-02-29 12:29:15

0

客戶端是否需要所有數據(但您認爲單個消息要大)還是隻需要部分數據?

如果他不需要所有的數據,更好的方法可能是爲用戶提供能夠過濾的服務。

如果用戶需要所有數據,那麼「經典」解決方案將返回所有數據。 但是,當客戶端是Web應用程序等瘦客戶端時,這可能會有問題。

如果該服務應該是一個通用服務(適用於其他客戶端),我會用自定義服務包裝它,以允許在每次調用中獲得小塊「數據塊」。如果該服務不是通用的,並且是爲該客戶端定製的 - 我會更改基本服務以允許分塊數據。

一般而言 - 具有「面向會話」的服務並不是一種好的方法,但客戶端服務器與應用程序的交互不是一種典型的服務,並且它在通用服務提供者和服務消費者之間通常具有更強的耦合。

0

感謝大家的反饋。

我想我需要分頁的結果。該服務是一般用途。它旨在被任何應用程序(作爲API)使用。

所以最合適的方法應該是通過塊/頁面獲取數據。 我可以在我的客戶端應用程序(WPF)中讀取特定數量的行。

Alex。