私はサードパーティのexeを使用してリクエストを処理するasp.netのウェブサイトを持っています。現在、私のワークフローはAsp.Net - 外部アプリケーションへの処理をオフロード
ユーザーが任意のブラウザを使用してWebサイトにアクセスし、ジョブの詳細をフォームに記入
ウェブサイトはポート
Windows上で待機しているWCFのセルフホストされているWindowsサービスを呼び出していますサービスはサードパーティのexeを起動してジョブを処理し、結果をウェブサイトに返します
ウェブサイトは返された結果をユーザーに表示します
上記のウェブサイトは、今すぐプロダクションの準備ができている必要があります。私は、上記のアーキテクチャには壊れる可能性のある多くの点があることを認識しています。たとえば、マシンの電源がオフになっている場合や、Windowsサービスがクラッシュしてもポートで待機していない場合は、現在のすべてのリクエストが処理を停止します。アーキテクチャは、より堅牢にするために、私は次の
ユーザーが任意のブラウザを使用してWebサイトにアクセスし、
ウェブサイトは、データベースへのジョブの詳細を書き出しジョブの詳細をフォームに記入検討しています
新しいジョブのためにデータベースを10秒ごとにポーリングするWindowsサービスは、ジョブを取得し、サードパーティアプリケーションを使用してジョブを実行します。結果はデータベースに書き戻されます。
データベースのポーリングを開始したWebサイトでは、結果を取得してユーザーに表示します。
2番目のアーキテクチャでは、より多くのロギング機能が提供され、ジョブがキューに入っていればジョブを再開できます。ただし、スケーラビリティに欠ける多量のポーリングが必要です。誰もより良いアーキテクチャをお勧めできますか?
同様の種類の要件でPOCを実行しましたが、手順2でMSMQを考慮しましたが、プロジェクトに実装しませんでした。この興味深い実装に関する回答を楽しみにしています。 – Sunny
@Sundeep - MSMQの代替案は、あなたのプロジェクトにどのように使用されましたか?プロジェクトが完了したか、それともまだ進行中ですか?ありがとうございました –
これは長年前のことでしたが、アプリケーションはバックエンドの処理を行い、通知メールをユーザーに送信します。だから、即座に処理するためにそれを置き換えることを望んでいた。 – Sunny