0

IISで実行されているASP.NETを使用してWebアプリケーションを開発したいと思います。

ユーザーがMAXIMA入力コマンドを送信すると、コードビハインドはカスタムWindowsサービスに、外部アセンブリを実行する新しい個別の一時プロセスを作成するように要求します。

より正確には、すべてのユーザーにサービスを提供するWindowsサービスは1つだけですが、各ユーザーは、外部アセンブリを実行する別個の一時的なプロセスに関連付けられます。

Windowsサービスには、特定のポートでリッスンする単一のソケットと、通信用の非同期ソケットのリストが含まれています。リストの各ソケットは、クライアントソケットとして機能する外部アセンブリを実行する個別の一時プロセスと通信します。

注:外部アセンブリはバッチファイル(管理対象アセンブリではない)であるため、アプリケーションドメインではなくプロセスを使用します。

私の質問は次のとおりです。

  1. コードビハインドからWindowsサービスを呼び出す方法は?
  2. 各ユーザーを個別の一時的なプロセスに関連付けるにはどうすればよいですか?
  3. 同時に作業するユーザーが増えている場合、スケーラビリティを向上させるにはどうすればよいですか?
  4. ユーザーが入力したMaxima入力コマンドが長時間実行プロセスを引き起こす場合、進行状況についてユーザーに通知するための賢明な方法は何ですか?

次のリンクは、私のプロジェクトに関する詳細を提供します:https ://sourceforge.net/projects/aspmaxima/forums/forum/1190702/topic/3786806

前もって感謝します。

4

1 に答える 1

1

MVCアプリでコードビハインドを使用しないでください。

管理されていないコードと相互運用する際のスケーラビリティは困難です。これを行う唯一の正しい方法は、問題を分解することです。

  • 管理されていないアプリを起動すると、すでに独自のプロセスがあります。
  • 監視を使用して、Webアプリから呼び出されたサービスの複数のタスクフロー?あなたはWindowsServerAppFabricについて説明しています。AppFabricを使用してサービスをホストすれば、これらすべてを自分で作成する必要はありません。
  • スケーラビリティに関しては、管理されていないプロセスを扱う場合、同時に開始できる数を制限する必要があります。特定のハードウェアで最適なものを決定するには、試行錯誤が必要です。
  • 管理されていないタスクの進行状況は、そのアプリが特に提供している場合にのみ監視できます。
  • 起動されたアプリはデフォルトでサービスの(通常は発生した)権限を継承するため、サービスから任意のアンマネージコードを起動することは危険です。デフォルトの代わりに、起動されたアプリに特定の制限されたクレデンシャルを使用することを検討してください。
于 2010-07-28T13:13:14.863 に答える