2011-04-04 57 views
1

在處理WCF和大文件的stackoverflow上有很多帖子,但一般建議是使用流式處理。這似乎不是一個非常可互操作的解決方案。WCF處理大文件,具有WS-I互操作性

如何處理WCF中的大文件並仍然保持互操作性?

回答

0

老實說,流媒體是如此流行的解決方案的原因是,它運作良好。 .net處理WS-I風格請求的正常方式對於大型文件來說是非常可怕的。這並不意味着傳輸大型文件,如果你真的嘗試這麼做,那麼你會發現很難擴展到任何顯着的流量。

最好的答案是避免它。如果需要,可以添加一個服務請求,它可以通過您的服務「設置」文件傳輸,然後使用cookie正常獲取HTTP請求以實際獲取文件。

如果您確實必須通過WS-I服務發送文件,您所能做的就是啓用MTOM,並希望您一次無法獲得足夠的請求來從RAM中運行服務器,以處理那些真正大的XML消息。

+0

你能否解釋「最好的答案就是避免它,如果你需要添加一個服務請求,它可以」設置「你的服務上的文件傳輸,然後使用一個cookie來實現正常的HTTP請求,文件。」另外,你有任何參考,所以我可以讀? – Fireworks 2011-04-05 13:50:14

+0

這就是說如果你在文件傳輸之前必須做任何工作,你可以做一個服務調用來做這些事情並且準備好一切,當客戶端接下來嘗試進行文件傳輸時,文件對他們是「準備好」的。如果你只是在沒有太多額外工作的情況下發送大文件,這是沒有必要的。我沒有在內部項目中上傳大文件。用戶調用創建文件記錄和條目的正常服務,並檢查權限。如果獲得批准,它會發回一個「令牌」值(當然,通過SSL)。 – Tridus 2011-04-05 13:55:09

+0

(續)然後,客戶端使用該令牌將該文件作爲請求的一部分進行流式處理,以便服務器知道它是誰。必須這樣做,因爲WCF流不支持身份驗證。我不知道你想要做什麼,所以你可能不必擔心。 (並沒有好的參考,但我不得不自己想出很多:) :) – Tridus 2011-04-05 13:55:56