我正在构建一个 .NET 远程客户端/服务器,它将传输数千个不同大小的文件(从几个字节到数百 MB 不等),我想要一些关于实现此目标的最佳方法的反馈。在我看来,有几个选择:
- 将整个文件序列化到我的远程处理对象中并一次传输,无论大小。这可能是最快的,但是传输过程中的失败需要重新传输整个文件,无法恢复。
- 如果文件大小大于小文件(如 4KB),请将其分成 4KB 的块并远程处理,在服务器上重新组装。除了复杂性之外,由于持续的往返和确认,它更慢,尽管任何一个部分的失败都不会浪费太多时间。
- 在我的应用程序中包含 FTP 或 SFTP 服务器之类的东西 - 客户端将通知服务器它开始使用远程处理,上传文件,然后使用远程处理来通知完成。我想在我的应用程序中包含所有内容,而不是需要单独的 FTP 服务,但如果需要,我愿意接受这个选项。
- 使用某种声明的 TCP 连接或 WPF 或其他为处理故障或能够执行某种检查点/恢复而构建的传输方法。
- 还有其他我想念的吗?
最灵活/可靠的传输方式是什么?我不太关心速度,但更关心可靠性 - 我希望文件移动,即使它很慢。由于客户端和服务器将是多线程的,如果连接允许,我可以同时传输多个文件。
感谢您的反馈 - 我将提供赏金以获得有关人们实现此目标的方法的一些建议。