2012-10-10 65 views
0

我正在開發一個wpf應用程序,它可以與wcf通信到db。一個要求是上傳文件,併爲它們編制索引以供以後檢索。在不重新發明輪子的情況下做到這一點的最佳方法是什麼。我擔心這個恐懼超時使用wcf。解決方案需要位於後臺線程中,允許我跟蹤進度,重試或繼續失敗,並加密。我找不到像我在Silverlight/asp.netwpf上傳文件到服務器

的文件上傳控制或者我應該b集成到一個dms?

回答

0

你可以使用Asp.Net WebApi的那種東西。使用diffirent工具沒什麼不好。您可以在任何應用程序中託管它,並且它會簡單的http上傳。

Serverside集團代碼示例:Uploading large files using ASP.NET Web API and Azure Blob Storage

+0

但我沒有使用Azure ....或者這只是爲了顯示asp.net端? – Crudler

+0

只是爲了表明asp.net在裏面,所以,一般來說,你的上傳代碼是一樣的。甚至相同,如果你想自己的WebApi沒有IIS =) –

0

嘗試System.Net.WebClient.Upload

+0

似乎這是要走的路線。我是否還需要編寫一個asp.net頁面來接收文件? TX – Crudler

0

MS SQL Server的FILESTREAM是用於存儲文件,因爲這些文件是由SQL(存儲它們,文件名(保證唯一性),等)管理,但仍然在幕後,它們被存儲在文件系統和漂亮實際上不在數據庫中(膨脹你的數據庫)。您的代碼將它們視爲BLOB,但它們實際上是文件。

WCF可以處理傳輸任何通用的stream of large data。您的操作合約(WCF的Web方法名稱)有一些限制條件可以使其運作。雖然,這種方法沒有一個好的方式來報告傳輸進度(我知道的)。如果這不符合您的需要,您可以隨時使用其他提交的解決方案或FTP。

也檢查WCF的傳輸安全性進行加密。

你將不得不在你自己的後臺線程中管理這個。對於在後臺工作的線程,可以看到BackgroundWorker,可以向UI線程報告進度(非常重要),當線程完成時,它會提供一個方法,再次向UI線程報告。不管你選擇什麼方法,你將不得不處理超時,所以如果它是WCF,FTP,WebClient.Upload等,你仍然需要處理相同的問題,但方式稍有不同。至少在WCF中,超時時間是在您的應用程序配置文件中配置的,因此您可以輕鬆調整時間。