2017-12-11 23 views
0

顧客にバルク電子メールを送信するためのWindowsサービスアプリケーションを開発しています。私の場合は、いくつかのパラメータを渡してASP.Net MVC Webアプリケーションからサービスを手動で開始して停止する必要があります。 これはオンデマンドであり、このアクティビティのスケジュールはないので、サービスは長時間実行されるタスク(100Kカスタマへの一括電子メールの送信)を一度だけ実行し、一度開始してから完了すれば停止します。Windowsサービスアプリケーションは、1度だけ実行時間の長いタスクを実行し、完了後に停止します。

  1. この方法は正しいですか?
  2. はいの場合、MVCアプリケーションの進捗状況をどのように追跡できましたか?

+0

これまでに試したことはありますか? MVCアプリケーションの進捗状況をどのように追跡できるか調査しましたか? – programtreasures

+0

はい、私はそれについて研究しました。私は、SignalRが進行状況とリアルタイム機能を追跡するための適切なツールであることを発見しました。 –

+0

WCFを使用することもできます。 – programtreasures

答えて

0

このアプローチが間違っている、ありがとうございました。 「Windowsサービス」とは、あるクライアントがそれを呼び出すのを待っている、または起こるイベントを待つアプリケーションの一種です。 (Unix/Linux専門用語ではデーモンと呼ばれます)

あなたの場合、「サービス」はバッチ処理を行う通常のプログラムでなければなりません。ですから、単にProcess.Start()で別のプロセスを開始してください。それはあなたのASP.NET MVCアプリケーションで何もブロックしません、それはちょうどその仕事をして終了します。

進捗状況を追跡するには2通りの方法があります。 WaitFor()のようなProcessオブジェクトメソッドをタイムアウトで呼び出すと、ジョブが完了したかどうかを確認できます。また、あなたの "サービス"アプリケーションはおそらくその進捗状況をファイルに書き出し、MVCアプリケーションはいつでもそれを読んで何が起きているのかを見ることができます。

+0

私はすでにMVCアプリケーション(CRMの一種)を開発していますが、モジュールが多すぎます。有益な電子メールの設定や顧客の電子メールに関する情報はそこで入手できるので、大量の有益な電子メールを送るために別のモジュールを追加する必要がありました。この要件に対するあなたの提案は何ですか? –

関連する問題