C# 通过internet传输大型文件的可靠快速方法

C# 通过internet传输大型文件的可靠快速方法,c#,.net,networking,filesystems,file-transfer,C#,.net,Networking,Filesystems,File Transfer,我正在处理一个涉及许多客户端PC和一些服务器机器的设置。我需要在这两台电脑之间组织一种可靠、快速的文件传输方法,这将由运行在这两台电脑上的C#apps启动。任何客户端都可能希望从任何服务器发送/接收数据。这些选择包括: FTP-使用或将文件上载到FTP服务器。服务器在其文件系统上检查新文件,并执行所需步骤 SCP-安全文件传输。使用与FTP相同,但提高了机器之间的安全性。可能比FTP慢 DropBox/Box.Net-使用在线云存储解决方案和库,如。可能是免费/付费的。考虑到上述当事人有你的档

我正在处理一个涉及许多客户端PC和一些服务器机器的设置。我需要在这两台电脑之间组织一种可靠、快速的文件传输方法,这将由运行在这两台电脑上的C#apps启动。任何客户端都可能希望从任何服务器发送/接收数据。这些选择包括:

  • FTP-使用或将文件上载到FTP服务器。服务器在其文件系统上检查新文件,并执行所需步骤

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

  • DropBox/Box.Net-使用在线云存储解决方案和库,如。可能是免费/付费的。考虑到上述当事人有你的档案,可能不太安全

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


您有什么建议?

您可以使用的功能。据我所知,数据作为服务器共享给每个客户机。那么为什么不考虑使用洪流协议呢?这是一个开源库。

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

如果您要将非常大的文件共享给多个端点,您可以从以下两个方面获得良好的服务:

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

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

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



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

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

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


    我不是任何MFT软件公司的员工,但我是一个非常高兴的客户,热爱该产品。这让我的工作生活轻松多了。这里有一个很好的例子,说明它如何帮助it员工,您的文件对于每个客户是唯一的还是共享一些共同的数据?那么p2p呢?通常是唯一的文件。可能偶尔会有一些常见的文件(如软件升级数据),那么p2p将是一种滥杀滥伤。如答案部分所述,您可以将WCF用于流媒体。当存在多个种子和对等点时,Torrents工作得最好。对于单个数据源到单个客户机,基于TCP的传输没有什么好处。但是,如果Geotarget有一个场景,其中多个客户端可以相互对等,这是一个值得考虑的想法。在做了这么多广告之后,为什么不推荐您的商业解决方案呢?要列出的MFT解决方案太多了。至于基于UDP的文件传输,有几个,我工作的那个在我的个人资料中,大家都可以看到!如果不放免责声明,那是不诚实的。然而,我试图提供不利于某一特定产品的信息,即使是我工作的公司创建的产品。由于显而易见的原因,文件传输对我来说很有趣,所以我想提供我的意见和经验,仅此而已@GregPettit您是否会为许多较小的文件推荐MFT解决方案(a.从1MB到5MB或b.从15MB到35MB)。每个文件都不同于另一个,必须在几分钟内发送到世界上某个地方的某个客户机。如果您有以下情况,选择的解决方案是否会改变