通过互联网传输大文件的可靠而快速的方法

时间:2012-07-12 07:08:28

标签: c# .net networking filesystems file-transfer

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

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

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

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

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

你推荐什么?

4 个答案:

答案 0 :(得分:10)

我有一个超级偏见的意见,来自一家制作文件传输软件的公司,所以我把免责声明放在前面和中心,把我所说的一切都拿出来。 ; - )

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

  1. MFT(托管文件传输)解决方案
  2. 使用基于UDP的协议的产品或API
  3. 1 - MFT解决方案通常使用基于TCP的传输(如FTP)作为传输机制,但通常包括纯TCP中没有的其他可靠性机制。它们还将包括用于在许多端点之间安排和组织传输的工具。据我所知,没有任何重要的MFT解决方案可以免费或低成本获得,但是有很多企业级MFT解决方案以预期成本出现。

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

    有像Tsunami或UDT那样的基于UDP的开源文件传输协议。它们没有特别好的维护或功能丰富(我有一些偏见!)据我所知,没有一个本地C#库。但同样地,我所知道的商业产品中没有一个拥有本地C#库,尽管包装器可用。


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

答案 1 :(得分:4)

我觉得有趣的是这里提到了GoAnywhere。它被认为是MFT解决方案。我已经使用了多年的MFT,发现它非常有效地完成了你在这里所描述的内容,而无需编写C#代码。它不是免费的,但我认为这是非常值得的。

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

我不是任何MFT软件公司的员工,而是热爱产品的非常满意的客户。它使我的工作生活变得更加容易。这是一个很好的例子,它可以帮助IT员工http://blog.linomasoftware.com/2012/01/24/managed-file-transfer-changed-my-life/

答案 2 :(得分:2)

您可以使用streaming

WCF功能

答案 3 :(得分:2)

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