c# - 通过 Internet 传输大文件的可靠且快速的方法

标签 c# .net networking filesystems file-transfer

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

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

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

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

  • UDP - 使用类似 EME 的库或 GoAnywhere通过 UDP 直接从 PC 到 PC 传输数据。可能更快,但可能更不可靠,因为它使用定制技术。

你有什么建议?

最佳答案

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

如果您要将非常大的文件共享到多个端点,您可以选择以下两种方式之一:

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

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

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

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


如果您描述的调动类型将成为组织日常事件的常规且持续的一部分,那么除了我上面提到的内容之外,我很难推荐任何其他内容。为了“正确”地完成它(或者至少没有重要的开发项目),您可能需要一个商业解决方案。

关于c# - 通过 Internet 传输大文件的可靠且快速的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446643/

相关文章:

c# - 当您在 Windows 中运行 git push 命令时,控制台的标准输出重定向会发生什么

c# - 从数据库在 asp.net web api 中流式传输视频

.net - 如何使用 C# 正则表达式对象进行此替换?

c# - 如何在 .net 中获取可用的 wifi AP 及其信号强度?

windows - 您如何找出哪个 NIC 已连接到 Internet?

c# - 秒表计时异步/等待方法不准确

c# - DeleteAsync和PostAsync不起作用

.net - VB6 MSXML2 nodeTypedValue 的 .NET 4.6 等价物是什么?

c# - 在我的方法中有一个 block 是什么意思?

windows - FileSystemWatcher 停止监视网络文件夹