2011-11-29 85 views
2

我有一個倡議,我需要在文檔中將它們轉換爲WCF應用程序中的圖像。當諸如word文檔的文件通過流時,我會得到文檔的多個圖像,即文檔中每個頁面的一個圖像。在WCF流中返回多個文件

當我想要返回這些多個圖像回客戶端。什麼是通過流返回所有這些文件的好方法?我還需要告訴客戶文件的名稱和返回的文件數量,最好的方法是什麼?

這是我第一次使用WCF/web服務。

我還需要考慮轉換所花費的時間,如果花費太長時間或創建太多圖片,我需要返回一個錯誤。使用SOAP錯誤是告訴客戶端的好方法嗎?

我只是做一個數組的拜拜,並返回數組到客戶端?還是將所有圖像合併爲一個流並返回?如果流的大小太大(即超過2 MB),傳輸文件會不會有問題(緩慢)?

+1

如果您擔心使用WCF傳輸的數據量,請查看以下有趣的文章:http://msdn.microsoft.com/en-us/library/ms733742.aspx – Kolky

+0

此外,什麼是好的方法來使這個服務通用? Java和其他語言客戶可以調用這個Web方法並接收相同的文件流嗎? – user724535

回答

4

你可以傳輸任何大小的流,你可能會直接寫流。要將多個文件合併到一個流中,我認爲最簡單的方法是創建一個包含所有內容併發送該文件的zip文件。

您的方法簽名應該簡單地返回一個WCF將直接發送到底層綁定的Stream。您可以使用哪些綁定有一些限制,但WebHttpBinding支持它。

+0

客戶端如何將文件從一個流中分離出來?是否有可能沒有壓縮?我還需要讓客戶知道交易ID和文件的名稱。 – user724535

+0

然後你應該寫一些你自己的控制結構。您可以創建一個頭文件,其中包含流中文件的數量以及每個流的名稱和大小。爲了避免純粹的二進制格式,你也可以選擇返回XML(仍在流中)並讓文件內容以base64編碼。對於大型文件來說,這可能會讓人感到厭倦,您可能會選擇分爲兩種方法,一種是返回控制數據,另一種是每個文件的內容。 – faester

+0

你是什麼意思分裂成兩種方法?所以客戶需要調用兩種方法?一個用於獲取流,另一個用於獲取XML信息?但是客戶如何從流中分離出所有圖像? – user724535