0

我正在开发一个使用 wcf 与 db 通信的 wpf 应用程序。一项要求是上传文件,并将它们编入索引以供以后检索。在不重新发明轮子的情况下做到这一点的最佳方法是什么。我害怕使用 wcf 来担心超时。解决方案需要在后台线程中,允许我跟踪进度、重试或在失败时继续,并进行加密。我找不到像在 silverlight / asp.net 中那样的文件上传控件

还是我应该集成到 dms 中?

4

3 回答 3

0

您可以将 Asp.Net WebApi 用于此类内容。使用不同的工具并没有什么不好。您可以在任何应用程序中托管它,这将是简单的 http 上传。

服务器端代码示例:使用 ASP.NET Web API 和 Azure Blob 存储上传大文件

于 2012-10-10T21:32:35.677 回答
0

MS Sql Server 的FILESTREAM非常适合存储文件,因为文件由 SQL 管理(它们的存储位置、文件名(保证唯一性)等),但在幕后,它们存储在文件系统中,而不是实际存储在数据库(膨胀你的数据库)。您的代码将它们视为 BLOB,但它们实际上是文件。

WCF 可以处理任何通用大数据流的传输。您的操作合同(Web 方法的 WCF 名称)有一些限制才能使其正常工作。虽然,这种方法没有报告传输进度的好方法(我知道)。如果这不能按您希望的方式工作,您可以随时求助于这里人们提交的其他解决方案或 FTP。

另请查看 WCF 的传输安全性以进行加密。

您必须在自己的后台线程中管理它。有关在后台工作的线程,请参阅 BackgroundWorker,可以向 UI 线程报告进度(非常重要),并且当线程完成时,它提供了再次向 UI 线程报告的方法。

无论您选择哪种方法,您都必须处理超时,因此如果是 WCF、FTP、WebClient.Upload 等,您仍然需要处理相同的问题,但方式略有不同。至少对于 WCF,超时时间在您的应用程序配置文件中配置,因此您可以轻松调整时间。

于 2012-10-10T22:19:04.807 回答
0

试试System.Net.WebClient.Upload

于 2012-10-10T21:55:19.020 回答