2012-01-17 9 views
2

オフィスツールのサーバー側の自動化に対して、Mircosoftは推奨します(Considerations for server-side Automation of Office) ただし、その他のオプションはありません。私がやろうとしているのは、vsdファイルをhtml(画像+ハイパーリンクのマップ)に変換することです。これはまだAspose.Diagramでは可能ではありませんが、ここで同様の質問に対する回答が引用されています。 LibreOffice 3.5で使用される/ LibVisioは終了しておらず、ハイパーリンクもサポートしていません。Visioサーバー側の自動化の代替方法

他に何かお試しいただけますか? そうでない場合:ASP.NET Webサービスのアクセス権を設定して、セキュリティリスクを冒さずにVisioにアクセスできるようにするためのヒントがあれば幸いです。 (1つのチュートリアルでは、私には少し危険なシステム管理者アカウントを偽装するように設定しています)

答えて

1

オフィスオートメーションとWebアプリケーションの主な問題は、オフィスプログラムが複数のコピーを同時。 Visioや他のオフィスプログラムをWebリクエストからすぐに実行すると、どのタイプの共有メモリの問題が起きているのか分かりません。それらのアプリケーションのメモリフットプリントは、同時接続の10秒または100秒を処理するのに役立たない。さらに、リクエストしているブラウザはいくつかの理由から離れてしまっている可能性があり、実際にアプリの実行を停止する良い方法はありません。

これを念頭に置いて、アプリケーションを絞る限り、成功することができます。 1つの方法は、Visioがサーバー上で複数回インスタンス化されないように、Webサービスを使用して一種のキューシステムをセットアップすることです。

私は "visio server"を設定します。 Visioがインストールされた別のマシンを意味します。次に、キュースタックから1つのジョブを取り出してジョブを実行し、結果を保存するという目的のコントローラーアプリを作成します。これにより、一度に1つのジョブだけが実行されるため、一度に1つのVisioしか実行されません。これはいくつかのライセンス問題をきれいに処理することに注意してください。

したがって、Webアプリケーションはジョブをデータベースキューにポストします。コントローラーはそれらのジョブをポーリングし、ジョブを見つけたら実行して結果を保管します。すすぎ、繰り返します。

ウェブアプリケーションがデータベースをポーリングして、結果がいつ用意されているかを確認してユーザーに知らせることができます。おそらく15秒ごとにチェックするAjaxページのタイプでしょう。または、ユーザーは電子メールで結果を電子メールで送信するか、「後でチェックアウトする」ことができます。

これは、コントローラーとVisioが実行されているすべての種類のセキュリティリスクを回避します。別のマシン。この別のマシンでは、visioを実行してデータベースからジョブ情報を取得する以外の権限は必要ありません。だから、たとえあなたが悪意のあるビジオ事件を起こしていたとしても、被害はそのマシンに限られています。

関連する問題