0

GUIを備えたプログラム ( A.exe ) と、テキストを使って NLP 処理を行うツールバーがあります。そのツールバーには、いくつかの xml タグを追加してテキストを変換する関数 Aがあります。ここの誰か(上司) は、関数 Aを呼び出す Web サービスを作成することを望んでいます。Dynamic Data Exchangeについて教えてくれました(彼は数年前に使用していました)、SendMessageのようなものを見ました。

この Web サービスは、テキストを送信し、結果をxmlとして取得するなど、インターネット経由で誰かによって使用されます。遅すぎるために誰かが WS を呼び出したときに GUI プログラムを開始できませんでした。誰かがこのA.exeを一度起動することを提案し、WS はDDE 呼び出しを送信してこのA.exeを要求します。同時呼び出しの場合にA.exeがどのように反応するかはわかりません。

Web サービスは次のことを行います。

  1. ディレクトリにテキストファイルを保存する
  2. A.exeを呼び出す
  3. A.exeはテキスト ファイルを計算し、xml ファイルを作成します。
  4. WS は xml ファイルが存在するまでループします
  5. WS は xml を取得し、それをストリームとして元の呼び出し元に送信します

次の点に注意してください。

  1. DDE は古く、DDE サーバー対応プログラムが必要なようです。
  2. 私は Java 開発者であるため、SendMessage は少しあいまいです。
  3. 名前付きパイプまたは匿名パイプを使用して、提案どおりにその呼び出しを行うことはしませんでした。

ありがとうございました。

PS: サーバー側のプログラムを UI で呼び出す WS を構築するのは異端ですよね。

4

1 に答える 1

1

この質問に対する答えは、何を達成しようとしているかによって異なります。関数は、データベースなどの外部データ ソースからのデータを変更しますか? または、アプリケーション内で関数を呼び出しますか?

以下の質問から始めます。

1) ボタンの機能は何ですか? その機能をサービスに移して、複数のアプリケーション間で共有できますか?

2) 機能を DLL 内に配置して、2 つのアプリケーション間で共有できますか?

3) 2 つのアプリが相互に通信する必要があるかどうか。

2 つのプロセスが相互に通信する必要があり、アプリケーション B からのメッセージに応じてアプリケーション A を動作させたいだけの場合は、TCP/IP 通信に名前付きパイプを使用することを検討してください。これは .NET では十分に単純であり、プロセス間の迅速な通信を提供します。

更新: 名前付きパイプの使用に関する情報のリンクは次のとおりです: http://msdn.microsoft.com/en-us/library/bb546085.aspx

更新 2:これは、質問を更新した後の更新です。A.exe のソース コードにアクセスできますか? その場合、2 つのオプションがあります。1) そのロジックをサービスに移動するか、2) サービスがプロセスを呼び出して結果を取得できるように、コマンド ライン パラメーターを受け入れるように A.exe を変更します。ソース コードがなく、コマンド ラインから A.exe を呼び出すことができない場合は、Web サービスが呼び出すことができる形式でプロセスを自分で記述する以外にできることはほとんどありません。

PS 各サーバー要求は個別のプロセスを実行するため、同時呼び出しについて心配する必要はありません。

于 2012-04-04T12:32:49.937 に答える