asp.netからコンソールアプリケーションを実行する

私は、Webアプリケーションからコンソールアプリケーションを実行するために Process.Start を実行できることを理解していますが、このプロジェクトを正しく設計する方法を考えていきたいと思います。

認証されたユーザーは、バックエンドの作業を行うコンソールアプリケーションを実行する必要があるリクエストを送信することができます(長い時間がかかる場合もあります)。コンソールアプリケーションの結果をユーザーに表示する必要があります。

Process.Start はasp.netプロセスと同じスレッドでコンソールアプリケーションを実行しますか?その場合、これはユーザーのブラウザを「ロック」しますか?私はこれを非同期に行うべきですか?もしそうなら、これはどのように推奨されますか?コンソールアプリケーションから結果を戻すにはどうすればよいですか?

また、このアプローチは、リクエストを送信している数百人のユーザーに対してスケーラビリティがありますか?

それ以上の返事は?

1
@YuriyRozhovetskiy残念ながら、このコンソールアプリケーションは既に作成されており、Webサービスに変換することはできません
追加された 著者 Nick,
コンソールアプリケーションの代わりにWCFまたはWebサービスを使用することを検討する
追加された 著者 Yuriy Rozhovetskiy,

2 答え

Process.Start is a non-blocking call. You can use the Process object and handle its events and read from or write to its streams.

スケーラブルであれば、多くの強力なサーバーが必要になるかもしれません。それは実際のプロセスに依存します。

1
追加された

一般的な解決策は、バックグラウンド操作キューが格納されているデータベーステーブルを持つことです。したがって、ユーザーが要求を送信すると、新しいレコードがキューテーブルに追加されます。コンソールアプリケーションは定期的に実行され(例えば、Cronでスケジュールされる)、データベース内のキューテーブルをチェックし、バックグラウンドでタスクを実行し、その結果をデータベースに書き込む。

そのようなアプローチは非常に拡張性があり、広く使用されています。

1
追加された