Frage

Ich habe 2 Desktop-Anwendungen, die ich mit externen Anwendungen integrieren möchten. Eine der Anwendungen ist mit Plugins erweitert, das von mir entwickelt werden, bestimmte Funktionen zu schaffen, die für alle Distributionen nicht üblich sind. Die Situation kann in folgendem Diagramm beschrieben werden:

alt text http://img32.imageshack.us/img32/8902/integration1 .png

Wie ich bereits erwähnt, möchte ich integrieren (Daten empfangen und senden) meine Anwendungen mit externen Anwendungen oder SDKs. Normalerweise gibt 2 Arten von Daten aus externen Anwendungen:

  1. Allgemein / Common Daten - die immer relevant
  2. ist
  3. Spezifische Daten - die für jede externe Anwendung unterschiedlich gehandhabt werden sollte,

Mit „Kernapplikation“ kann die gewünschte Situation ist in diesem Diagramm beschrieben:

alt text http://img32.imageshack.us/img32/3299/integration2 .png

Die Allgemeinen Daten werden in der Kernapplikation behandelt und die spezifischen Daten in Plugins (Unterstützung Plugins) behandelt.

Eine Verteilung dieser Anwendung könnte ein von

sein
  • Kernapplikation + Yakko App + Yakko App Integrator + Yakko App Support Plugin
  • Core-Anwendung + Dot App + Dot App Integrator

Für die andere Anwendung, ich mag den gleichen „Integrator“ halten, aber sie anders in der Anwendung zu behandeln:

alt text http://img32.imageshack.us/img32/2088/integration3x .png

Wie würden Sie Unterstützung in meinen Anwendungen zu implementieren empfehlen für die Integration von externen Applikationen und SDKs, wie ich gerade beschrieben?

Weitere Informationen:

  • Ich verwende C ++ für Windows und die Plugins werden als DLLs verteilt.
  • Die Datentypen, die verwendet werden, im Voraus immer bekannt ist, ich brauche nur etwas generisch, wie es aus der Quelle an den Handler zu bewegen.
War es hilfreich?

Lösung

ich mit dem Kommentator zustimmen, scheint COM wie eine gute Strategie. Ihre Unterstützung DLLs registrieren lassen, wenn sie installiert sind, dann ist Ihr Kern-App für Plugins aussehen kann, so etwas wie:

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

oder in   hr = CoCreateInstance(clsid, ...,..., IID_IWAKKO, ...);

Andere Tipps

Schauen Sie sich die IPC-Optionen, die Fenster hat hier

Für mich auch sieht COM wie eine gute Option hier.

Eine andere Möglichkeit, dies zu tun, wäre Ihre Kernanwendung haben einen Server mit, die Anrufe von Ihrem Plugins zuhört. Sie können diese Rohre unter Verwendung von Namen erreichen. Nun wäre Ihre Unterstützung apps diese Plugins verwenden, um zu kommunizieren (über Named Pipes) mit dem Kern-App.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top