2011-09-19 60 views
1

我們有一個WCF服務,它從SQL Server數據庫返回一個字節數組。該字節數組通常代表報告,但將來可能是Word或Excel文檔。目前,返回的文件大約是300K,但一些接近900K。未來的辦公文件將落入相似的尺寸範圍。我應該何時考慮更改我的服務的退貨類型?

在什麼時候應該考慮改變返回類型還是byte []就好了?問題的第二部分是,如果我們應該改變它,我們會怎樣改變它?我們應該考慮流式傳輸還是其不適合這種類型的文件?

回答

1

如果您正在使用此WCF服務將數據從服務器下載到客戶端,如Web瀏覽器,則流式傳輸可能是一個好主意,因此無需在鏈中的任何位置將整個數據塊同時分配到內存中。

在這裏看到關於這個問題的大量的文檔和示例:How to: Enable Streaming

我也建議不破的ServiceContract如果你已經從一些方法返回提供byte[],這不是一個很好的做法,力如果可能和方便,所有客戶端都要重寫,只需並行添加新方法。

1

我會仔細看看你的WCF服務的性能,使用探查器或通過壓力測試。我不會改變它,直到它變得有必要,但你不是太遙遠。

要傳輸數據,您需要更改合同以返回Stream(或實施新合約以避免打破現有合同),並將傳輸模式設置爲流式傳輸。有一個非常好的寫作的優點和缺點,以及如何所有這些here

相關問題