オフィスオートメーションとWebアプリケーションの主な問題は、オフィスプログラムが複数のコピーを同時。 Visioや他のオフィスプログラムをWebリクエストからすぐに実行すると、どのタイプの共有メモリの問題が起きているのか分かりません。それらのアプリケーションのメモリフットプリントは、同時接続の10秒または100秒を処理するのに役立たない。さらに、リクエストしているブラウザはいくつかの理由から離れてしまっている可能性があり、実際にアプリの実行を停止する良い方法はありません。
これを念頭に置いて、アプリケーションを絞る限り、成功することができます。 1つの方法は、Visioがサーバー上で複数回インスタンス化されないように、Webサービスを使用して一種のキューシステムをセットアップすることです。
私は "visio server"を設定します。 Visioがインストールされた別のマシンを意味します。次に、キュースタックから1つのジョブを取り出してジョブを実行し、結果を保存するという目的のコントローラーアプリを作成します。これにより、一度に1つのジョブだけが実行されるため、一度に1つのVisioしか実行されません。これはいくつかのライセンス問題をきれいに処理することに注意してください。
したがって、Webアプリケーションはジョブをデータベースキューにポストします。コントローラーはそれらのジョブをポーリングし、ジョブを見つけたら実行して結果を保管します。すすぎ、繰り返します。
ウェブアプリケーションがデータベースをポーリングして、結果がいつ用意されているかを確認してユーザーに知らせることができます。おそらく15秒ごとにチェックするAjaxページのタイプでしょう。または、ユーザーは電子メールで結果を電子メールで送信するか、「後でチェックアウトする」ことができます。
これは、コントローラーとVisioが実行されているすべての種類のセキュリティリスクを回避します。別のマシン。この別のマシンでは、visioを実行してデータベースからジョブ情報を取得する以外の権限は必要ありません。だから、たとえあなたが悪意のあるビジオ事件を起こしていたとしても、被害はそのマシンに限られています。