2015-08-25 31 views
0

傳輸文件的文件夾,我具備這些端點WCF服務:如何壓縮和WCF

  1. 淨TCP端點。
  2. REST端點。

我的服務託管在IIS上。

我有一個web服務中的功能,我發送一個文件夾的名稱(將根據輸入改變,假設說「FolderData」)。 Web服務查看主文件夾(Let Say D:\ MasterDumps)並找到文件夾「FolderData」。該文件夾通常包含幾個XML文件和一個Excel文件。文件夾的大小從1 MB到100 MB不等(最小值爲&)。

我想壓縮此文件夾「FolderData」並將其發送到客戶端。在客戶端,我想提取內容並閱讀文件並在業務邏輯中使用它們。

我正在看這個utility壓縮和解壓縮文件。對於轉移,我正在查看返回流。

顯然我想盡可能地壓縮數據,以便通過電線傳輸的數據更少。

如果我在正確的道路上,我想提出一些建議。還有什麼更好的方法來實現這一點。可能是更好的壓縮方法(.NET庫),如果我可以在通過電線發送流時應用壓縮。

任何建議表示讚賞。博客或鏈接將有所幫助。

+0

對於荏苒部分,嘗試搜索類似 – TheLethalCoder

+1

'在C#壓縮和解文件' 如果你在.NET> = 4.5,有一個使用ZipFile類可用(https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile(v=vs.110).aspx) –

回答

0

請考慮:

  1. 使用WCF的流傳輸模式(見「流數據」一章,Streaming Message Transfer, MSDN),並適當地更新針對流數據的合同(見How to: Enable Streaming, MSDN)。
  2. 使用支持流式傳輸的相應ZIP壓縮/解壓縮庫(例如,來自.NET Framework 4.5,DotNetZip等的ZipArchive Class)。
+0

您好謝爾蓋,感謝您的答覆。我在兩個端點都使用了流模式。我使用DotNetZip作爲壓縮庫。我的問題是:1.是否有更好的壓縮庫,可以讓我減少DotNetZip的壓縮。 2.當我通過WCF響應流式傳輸Zip文件時,我也可以壓縮這個流嗎? – Shankar

+0

@Shankar,不客氣! 1.應該單獨調查。但是,例如,可以考慮7-Zip([SevenZipSharp](https://sevenzipsharp.codeplex.com/))。 2。「壓縮流」也是什麼意思? –

+0

嗨,謝爾蓋,我會看看Seven Zip。壓縮流的意思是,當我流並傳輸壓縮文件夾時,有任何機制可以通過壓縮zip發送(只是爲了進一步壓縮)。 - Girija – Shankar