2013-03-05 66 views
2

我們已經構建了一個WCF服務,設置爲一個SOAP服務。它從數據庫讀取數據,組裝響應並將其返回給客戶端。因爲它從數據庫中查詢它需要的所有數據,將整個響應組裝到內存中並將其返回給客戶端,如果數據量很大,則可能會有相當大的內存需求。如何處理大型WCF響應?

基本上,客戶端正在從數據庫請求一個特定的記錄,其中包含一個blob,我們無法控制它的大小。我們預計數據的大小可能從10k到3mb左右。我們可以使用的技術是我們可以將數據從數據庫中流出並傳輸到WCF響應中,因此我們不必一次加載全部3mb的內存。

編輯:
本來,我想這可能是 How to handle large file uploads via WCF?重複,但解決方案需要使用流作爲在OperationContract的參數。在我的情況下,雖然我需要我的請求的參數是一個複雜的對象,這將反映在服務的結果WSDL中。

[ServiceContract] 
public interface IFileUpload 
{ 
    [OperationContract] 
    bool UploadFile(Stream stream); 
} 
+0

可能重複[如何處理通過WCF的大文件上傳?](http://stackoverflow.com/questions/1935040/how-to-handle-large-file-uploads-via-wcf) – Jeremy 2013-03-05 20:32:39

回答

0

它是否需要同步?

我相信你也會瞪眼這個article,如果沒有的話?

我知道WCF是挑剔的緩衝區大小,所以你必須格外注意的是

0

流傳輸模式是與WCF處理大數據的最佳方式。看看msdn中的這個示例,開始吧WCF Stream Transfer mode

希望這會有所幫助。