3

外部アプリケーションと統合したい 2 つのデスクトップ アプリケーションがあります。アプリケーションの 1 つは、すべてのディストリビューションに共通ではない特定の機能を提供するために、私が開発したプラグインで拡張されています。この状況は、次の図で説明できます。

代替テキスト http://img32.imageshack.us/img32/8902/integration1.png

前述したように、アプリケーションを外部アプリケーションまたは SDK と統合 (データの送受信) したいと考えています。通常、外部アプリケーションからの 2 種類のデータがあります。

  1. 一般/共通データ - 常に関連するデータ
  2. 特定のデータ - 外部アプリケーションごとに異なる方法で処理する必要があります

「コア アプリケーション」では、必要な状況を次の図で説明できます。

代替テキスト http://img32.imageshack.us/img32/3299/integration2.png

一般的なデータはコア アプリケーションで処理され、特定のデータはプラグイン (サポート プラグイン) で処理されます。

このアプリケーションのディストリビューションは、

  • Core Application + Yakko App + Yakko App Integrator + Yakko App Support Plugin
  • コア アプリケーション + ドット アプリ + ドット アプリ インテグレーター

他のアプリケーションについては、同じ「インテグレーター」を保持したいが、アプリケーション内で異なる方法で処理したい:

代替テキスト http://img32.imageshack.us/img32/2088/integration3x.png

先ほど説明したように、外部アプリケーションと SDKS を統合するためのサポートをアプリケーションに実装するには、どのようにお勧めしますか?

ノート:

  • Windows で C++ を使用しており、プラグインは DLL として配布されています。
  • 使用されるデータ型は常に事前にわかっています。ソースからハンドラーに移動するための一般的な方法が必要なだけです。
4

2 に答える 2

1

コメント提供者に同意します。COMは良い戦略のようです。サポートdllはインストール時に登録され、コアアプリは次のようなプラグインを探すことができます。

hr = CLSIDFromProgID(L"Wakko.1.0", &clsid);  
hr = GetActiveObject(clsid, NULL, &punk);

また
hr = CoCreateInstance(clsid, ...,..., IID_IWAKKO, ...);

于 2009-05-20T11:06:44.543 に答える
0

Windows の IPC オプションを見てください。

私には、ここでも COM が良い選択肢のように見えます。

これを行う別の方法は、プラグインからの呼び出しをリッスンするサーバーをコア アプリケーションで実行することです。これは、名前パイプを使用して実現できます。これで、サポート アプリはこれらのプラグインを使用して、(名前付きパイプを介して) コア アプリと通信します。

于 2009-05-21T18:24:23.267 に答える