Wie realisiert Ihr Pluginfähige Anwendungen?



  • Hallo zusammen,
    mich würde einfach mal interessieren mit welchen Ansätzen Ihr selbst Pluginfähige Anwendungen realisiert. Bekanntlicherweise gibt es ja tausend Wege nach Rom. 😉
    Mir Persönlich gefällt hier der Weg den der QtCreator geht sehr gut (zumindest soweit ich dies bis jetzt Verstanden habe).



  • Ich verstehe die Fragestellung glaube ich nicht 100%, sorry :p.
    Ich stelle halt ein Interface zur Verfügung um an einer Stelle im Programm einzugreifen oder Daten zu manipulieren, neue Funktionen einzubauen etc.
    Je nachdem was ein Programm das ist.
    rya.



  • Mich interessieren die verschiedene Wege die es gibt um Anwendungen die Erweiterbarkeit über Plugins zu geben.

    Ein mir bekanntes Beispiel hierfür wäre die Definition eines Interface (wobei dies ja immer definiert werden muß), das direkte Laden der .dll / .so und übergeben der Schnittstelle an das Plugin (IHost) damit dies dort seine Menüeinträge, etc. setzen kann.

    Beim QtCreator wird dies z. B. ein wenig anderster abgearbeitet. Auch hier werden Schnittstellen definiert (diese werden ja immer benötigt). Die Exe Datei lädt zuerst das CorePlugin welches im Prinzip das Fenster und alle Standardfunktionen beinhaltet. Beim laden der gesamten Plugins geht der QtCreator ein Verzeichnis durch und parst die dort enthaltene xml (pluginspec) Dateien, prüft diese auf Ihre Abhänigkeiten und benötigten Versionsnummern. Erst anschließend wird die .dll / .so Datei geladen und initialisiert. Beim initialisieren bekommt das Plugin über eine statische Variable im Core Namespace Zugriff auf die Funktionalität des Coreplugins.

    Ich hoffe mal das es eventuell jetzt Verständlicher wird was ich meine. 🙂



  • Na, das macht der Qt Dingens auch nicht anders als Windows mit seinen COM bzw. ActiveX Plugins. Anstatt eine XML-Config, wird bei Windows in die Registry geschaut, um die Plugins zu identifizieren. Wobei seit WinXP ja auch das ActiveX einfach im Arbeitsverzeichnis der Anwendung liegen kann, um direkt identifiziert werden zu können.

    OSGi macht das auch so: in jedem Plugin gibt es ein MANIFEST.MF Datei (Key-Value), die Plugins liegen im plugins-Verzeichnis des Arbeitsverzeichnis der Anwendung.

    Es ist immer das gleiche Prinzip. Wie die Plugins identifiziert werden, kann sich unterscheinden. Aber ob es eine Key-Value-Konfig, eine XML-Konfig, eine Registry-Konfig ist... ist nebensächlich.


Anmelden zum Antworten