2010-11-23 22 views
1

大きなファイルの受信と処理を担当するWindowsサーバー側のアプリケーションを構築する必要があります(プロセスの処理には約3時間かかります)。Webサーバー上のFIFOをシミュレートする.NETアプリケーションを作成する

このような場合(Windowsサービスの可能性があります)、どのような場合に最良の方法が教えられますか?その場合、サービスに新しいファイルが処理可能であることを伝える方法を教えてください。

PS:いくつかの答えを見た後、私は問題を修正してくださいしようとするでしょう:プロセス・アクションは

編集並列処理することはできません。アップロード部分はすでに動作しています。私の問題は、アップロード後にファイルに対してアルゴリズムを実行する必要があることです。このアルゴリズムでは、1つのファイルを処理するのに3時間かかります。私は、処理するファイルがどこかに保存されていることを確認したい(メモリ上、データベース上、実際にどこにも関係ない)、前のファイルが終了したときだけ次のファイルを解析する。

答えて

0

アイドル状態(ファイルを処理していない状態)で、次に処理するファイルを決定して起動するコンソールアプリケーションが完成しました。

アプリケーションは、マシンの起動時に起動するように設定されています。

0

いくつかの単純なデータ収集を使用して、各プロセスのスレッドを収集します。

たとえば、Listのように使用して、現在処理中のスレッドのインデックスである変数を定義することができます。

+0

いずれかのオプションを選択すると、処理しなければならないファイルを知るためにデータコレクションを使用する必要があります。ここで私の問題は、私はWindowsサービス、コンソールアプリケーションなどを構築するかどうかを決定することです – dcarneiro

0

私はftpサーバをセットアップすることをお勧めし、そしておそらくFileSystemWatcherは、彼らがアップロードされると、ファイルをピックアップし、

http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

+0

現在、私はサーバーにファイルをアップロードし、アップロードが終了したときにそれらを処理するASPファイルがあります。問題は、n人のユーザーがn個のファイルを同時にアップロードすることを決定した場合です。このプロセスはプロセッサが重いので、シーケンシャルな方法(FIFOのように)で行う必要があります。ダーニエル@ – dcarneiro

+1

あなたは何を 'FIFO'にしたいですか?ウェブサーバー、画像処理?私はあなたがおそらくこれについて十分考えているとは思わない。 ファイルをアップロードしてもプロセッサ上で重くなってはいけません。 – TimC

+0

ファイルのアップロードはプロセッサ上で重くはありませんが、各ファイルのrawデータは約600MBです。アップロード部分は既に動作しています。私の問題はポストアップロードプロセッサです。私たちは処理するのに約3時間かかっているファイルに対してアルゴリズムを実行します。 n人が生データのファイルを同時にアップロードしようとすると、それはもっと悪くなります。到着したファイルをFIFOとして処理する方法が必要です。ダニエル@ – dcarneiro

0

あなたはファイルをアップロードするBITSを使用することができるかもしれないそれらを処理します。そのAPIのC#ラッパーがありますhere

アップロードにはserver-side dependency on IISがあります。

BITSは、必要なセキュリティおよびその他の更新をupdate.microsoft.comからマシンに自動的に入力するために(ダウンロードモードで)使用されるテクノロジです。

+0

現在、私はファイルをサーバーにアップロードし、アップロードが終了するとファイルを処理するASPファイルを持っています。問題は、n人のユーザーがn個のファイルを同時にアップロードすることを決定した場合です。このプロセスはプロセッサが重いので、シーケンシャルな方法(FIFOのように)で行う必要があります。 – dcarneiro

+1

はい、BITSを使用する方がクライアント主導です。サーバー上でこれが提供しないシーケンシングロジックが必要であるように思えます、ごめんなさい。 –

関連する問題