使用.NET在慢速网络中移动不同大小的文件的最佳方法

Sql*_*yan 5 .net latency network-traffic network-efficiency .net-remoting

我正在构建一个.NET远程客户端/服务器,它将传输数千种不同大小的文件(从几个字节到几百MB),我想要一些关于实现这一目标的最佳方法的反馈.在我看来,有几个选择:

  • 将整个文件序列化为我的远程处理对象,并立即进行传输,无论大小如何.这可能是最快的,但传输过程中的失败要求重新传输整个文件,无法恢复.
  • 如果文件大小大于小(如4KB),则将其分成4KB块并远程调整,在服务器上重新组装.除了这种复杂性之外,由于持续的往返和确认,它的速度较慢,但​​任何一件都不会浪费太多时间.
  • 在我的应用程序中包含类似FTP或SFTP服务器的东西 - 客户端将通知服务器它正在开始使用远程处理,上传文件,然后使用远程处理来通知完成.我想在我的应用程序中包含所有内容,而不是需要单独的FTP服务,但如果需要,我可以选择此选项.
  • 使用某种陈述的TCP连接或WPF或其他一些传输方法来构建处理故障或能够进行某种检查点/恢复.
  • 还有我失踪的其他人?

什么是最灵活/可靠的传输方法?我不关心速度,但更关心可靠性 - 我希望文件移动,即使它很慢.由于客户端和服务器将是多线程的,如果连接允许,我可以同时传输多个文件.

感谢您的反馈 - 我将获得一些奖励,以获得有关人们将如何实现这一目标的一些建议.