12

我正在使用涉及许多客户端 PC 和一些服务器机器的设置。我需要在这些 PC 之间组织一种可靠且快速的文件传输方法,该方法将由在两者上运行的 C# 应用程序启动。任何客户端都可能希望从任何服务器发送/接收数据。选项包括:

  • FTP - 使用FtpWebRequestSOSFTP将文件上传到 FTP 服务器。服务器检查其文件系统上的新文件并执行所需的步骤。

  • SCP - 安全文件传输。用法与 FTP 相同,但增加了机器之间的安全性。可能比 FTP 慢。

  • DropBox / Box.Net - 使用在线云存储解决方案和SharpBox等库。可能是免费/付费的。考虑到该方拥有您的文件,可能不太安全。

  • UDP - 使用EMEGoAnywhere等库通过 UDP 直接将数据从 PC 传输到 PC。可能更快,但可能更不可靠,因为它使用定制技术。

你有什么建议吗?

4

4 回答 4

10

我有一个超级偏见的观点,来自一家生产文件传输软件的公司,所以我把免责声明放在前面和中心,以对我所说的一切持保留态度。;-)

如果您将非常大的文件共享到多个端点,那么您可以使用以下两种方法之一:

  1. MFT(托管文件传输)解决方案
  2. 使用基于 UDP 协议的产品或 API

1 - MFT 解决方案通常使用基于 TCP 的传输(如 FTP)作为传输机制,但通常包含纯 TCP 中没有的附加可靠性机制。它们还将包括用于安排和组织许多端点之间的传输的工具。据我所知,没有任何重要的 MFT 解决方案可以免费或低成本获得,但有大量企业级 MFT 解决方案以预期的成本提供。

2 - 几年来,一些公司已经在 UDP 之上构建的协议中构建了专有的控制和可靠性机制。通过创建这个自定义层,UDP(它自己没有可靠性)实际上变得更加可靠,并且可以拥有比基于 TCP 的传输所能拥有的更多的功能,同时不会受到数据包丢失和延迟的不利影响(读作:通常更快的传输速度)。该协议也不一定独立于 MFT(它固有地具有一些 MFT 特性,供应商可能会将其烘焙到 MFT 解决方案中),但可能可用于其原始协议(通过 API),并且没有传统的所有 UI 陷阱“MFT 解决方案”。

有一些开源的基于 UDP 的文件传输协议,比如 Tsunami 或 UDT。它们不是特别维护良好或功能丰富(我有一些偏见!),据我所知,它们都没有原生 C# 库。然而,在同一点上,我所知道的商业产品都没有本地 C# 库,尽管包装器可用。


如果您描述的转移类型将成为组织日常活动的常规和持续部分,那么我很难推荐任何超出我上面提到的内容。并且要做到“正确”(或者至少没有不重要的开发项目),您可能需要一个商业解决方案。

于 2012-07-13T04:01:58.207 回答
4

我发现这里提到 GoAnywhere 很有趣。它被认为是一种 MFT 解决方案。我已经使用 MFT 好几年了,发现它可以非常有效地完成您在此处描述的操作,而无需编写 C# 代码。它不是免费的,但我认为物有所值。

它允许您自动化和安排各种传输协议,例如 FTP、SFTP、FTPS、PGP、HTTPS,以及跨网络连接到多个共享 PC 和服务器。如果我需要按摩数据以使用不同的应用程序,MFT 还允许我进行格式更改。运行查询以仅从各种数据源中提取我需要的数据。它还记录所有交易,以便我可以验证它是否已发送文件,并且可以设置为在有任何错误时通过电子邮件提醒我。我发现它是满足我所有数据传输要求的完美工具。

我不是任何 MFT 软件公司的员工,而是一个非常喜欢该产品的客户。它让我的工作生活变得如此轻松。在http://blog.linomasoftware.com/2012/01/24/managed-file-transfer-changed-my-life/上有一个很好的例子来说明它如何帮助 IT 员工

于 2012-07-18T15:08:06.410 回答
2

您可以使用WCF的流式传输功能

于 2012-07-12T07:21:29.643 回答
2

据我了解您所写的内容,数据作为服务器共享给每个客户端。那么为什么不考虑使用 torrent 协议呢。这是一个开源库。 http://www.mono-project.com/MonoTorrent

于 2012-07-12T07:25:40.943 回答