さまざまなサイズ(数バイトから数百MBまで)の数千のファイルを送信する.NETリモーティングクライアント/サーバーを構築しています。これを実現するための最良の方法についてフィードバックをお願いします。私が見ているように、いくつかのオプションがあります。
- ファイル全体をリモーティングオブジェクトにシリアル化し、サイズに関係なく一度に送信します。これはおそらく最速ですが、送信中に障害が発生すると、ファイル全体を再送信する必要があり、再開する方法はありません。
- ファイルサイズが小さいもの(4KBなど)よりも大きい場合は、4KBのチャンクに分割し、それらをリモートにして、サーバーで再アセンブルします。これの複雑さに加えて、継続的なラウンドトリップと確認応答のために遅くなりますが、1つのピースの障害は多くの時間を無駄にしません。
- FTPまたはSFTPサーバーのようなものをアプリケーションに含める-クライアントはサーバーにリモート処理の使用を開始していることを通知し、ファイルをアップロードしてから、リモート処理を使用して完了を通知します。個別のFTPサービスを必要とするのではなく、アプリにすべてを含めたいのですが、必要に応じてこのオプションを利用できます。
- 障害を処理するために構築された、またはある種のチェックポイント/再開を実行できる、ある種の指定されたTCP接続またはWPFまたはその他の伝送方法を使用します。
- 私が行方不明になっている他のものはありますか?
最も柔軟で信頼性の高い伝送方法は何ですか?速度についてはそれほど心配していませんが、信頼性についてはもっと心配しています。ファイルが遅くても移動したいのです。クライアントとサーバーはマルチスレッドになるので、接続が許せば同時に複数のファイルを送信できます。
フィードバックをありがとうございます-私は人々がこれを達成する方法についていくつかの推奨事項を得るために賞金を投入します。