asp.netを使用してリモートサーバー上のフォルダーの複製を作成し、高速に保つにはどうすればよいですか?

asp.net c# io
asp.netを使用してリモートサーバー上のフォルダーの複製を作成し、高速に保つにはどうすればよいですか?

別のサーバーにあるフォルダーの複製を作成する必要があるASP.NETページがあります。 すべてのファイルIOがリモートサーバーで実行されます。 これは、あるコンピューターから別のコンピューターにファイルをコピーする方法に関する質問ではなく、再帰的なディレクトリコピーを行う方法に関する質問でもありません。 これらのタスクは非常に簡単です。

私が見つけたのは、ASP.NETアプリケーションを実行しているサーバー上にディレクトリのコピーを作成することは素晴らしく、速いということです。 ソースおよび宛先フォルダーがリモートサーバーに常駐するとすぐに(つまり、 ファイルサーバー)、それは*信じられないほど遅い*になります。 なぜそんなに遅いのかわかりません。つまり、問題を回避する良い方法を本当に見つけられないのです。 完全に明確にするために、ここに私が達成しようとしているものの例を示します。

  • asp.netアプリケーションは、「webserver」という名前のサーバーで実行されています

  • ファイルは「fileserver」という名前のサーバーにあります

  • 再帰を作成するには、「webserver」で実行されているWebサイトが必要です
    \\ fileserver \ files \ setup_tempという名前の\\ fileserver \ files \ setupの複製

この質問への回答が既にある場合は、正しい方向に向けてください。 「再帰コピーを作成する方法」と「フォルダを別のサーバーにコピーする方法」に対する答えがたくさん見つかりました

  0  0


ベストアンサー

Webアプリ自体から実行する代わりに、いくつかのリモート実行コマンドを使用することをお勧めします。 たとえば、http://www.computerperformance.co.uk/powershell/powershell_invoke.htm [Powershell]またはhttp://technet.microsoft.com/en-us/sysinternals/bb897553[PSExec]を使用する場合は、コピー操作の2つのエンドポイントの接続を維持するWebアプリ。 どのようにコピーを行っているのかわかりませんが、.NETで何かを呼び出してその作業を行う場合、それはサーバーがその操作の仲介者であり、それが遅くなることを意味します。

メッセージを読み直すと、リモートサーバー自体でIOが発生していると考えているようです。 その場合、これらの提案はあまり役に立ちません。 🙁

1


Webサーバーはどのようにファイルサーバーと通信しますか? これら2つの間でのデータ転送は間違いなくボトルネックです。 WCFサービスを使用して、一度に1つのファイル/フォルダーを転送することをお勧めします(データのサイズに応じて)。 ファイルが非常に大きい場合は、http://msdn.microsoft.com/en-us/library/ms731913.aspx [streaming]を有効にすることもお勧めします。

0


タイトルとURLをコピーしました