Plugin Factory - Wie am besten Aufbauen



  • Hallo

    Ich bräuchte mal ein paar Diskussionspartner :-). Und zwar geht es um ein Plugin-System das ich ausbauen möchte, habe auch schon einiges dazu gelesen und mir einige vorhandene Plugin-System angeschaut. Ich zähl hier erstmal meine Ideen auf, meine angedachten Vor- und Nachteile und würde mich gern über Feedback freuen was daran falsch ist oder auch richtig. Oder wie ihr es gemacht habt.

    1.) Jede Plugin-DLL meldet sich beim laden direkt an der "Factory" an. Über eine Variable im umbenannten namespace geht das recht schön. Und nach dem laden aller DLLs dann durch die "Factory" laufen und die passenden Objekte noch erzeugen.
    + Mehrere Plugins pro dll möglich
    - Beim erstellen etwas umständlich, da zum einen die Grund-DLL statisch gelinkt sein muss

    2.) Eine feste globale Funktion, die von jeder Plugin-DLL unterstützt werden muss. Diese Funktion gibt dann ein Objekt des Plugins zurück.
    + Einfaches übersetzten, es wird nur der Header des Plugins benötigt
    - beschränkt auf 1 Plugin pro DLL

    2.1) Punkt 2 wird erweitert, das die globale Funktion nicht direkt ein Objekt zurück gibt sondern, einen Vector oder ein Array von Funktionspointer, welche entsprechend die Objekte erzeugen
    + wie bei Punkt 2
    + Beschränkung aufgehoben

    Hoffe auf eine rege Beteiligung.

    MfG marco



  • Deine konkrete Frage ist ... ?



  • Hy

    Mir geht es darum:

    Ich bräuchte mal ein paar Diskussionspartner :-).

    Einfach darüber zu reden wie man es noch machen könnte, oder ob ich an einigen Punkten einfach falsch liege. Bzw vllt auch noch Informationen wieso man es auf diese und nicht auf eine andere Weise tut.

    MfG marco



  • Du liegst in allen Punkten richtig.



  • Hast du dir schon eines gebaut und wenn ja dann mit welchen Weg?



  • knivil schrieb:

    Deine konkrete Frage ist ... ?

    Ich hab eine: Warum nimmst du(er) nicht einfach osgi oder eine andere bewährte Implementierung für ein Pluginsystem?



  • BierzeltOmi schrieb:

    knivil schrieb:

    Deine konkrete Frage ist ... ?

    Ich hab eine: Warum nimmst du(er) nicht einfach osgi oder eine andere bewährte Implementierung für ein Pluginsystem?

    Hmm weil ich diese eben nicht kenne. Daher ja auch die offene Art der Frage, damit eben in nichts eingeschränkt ist. Werde mal danach suchen. Kannst ja bei Gelegenheit noch ein paar Namen nennen oder vllt eine Website mit überblick.

    MfG marco



  • Achja wie ich mir gerade OSGI angeschaut habe ist mir aufgefallen, das ich vergessen habe zu erwähnen das es hier um ein C++ Plugin-System geht. In dem Fall von OSGI ist es für JAVA was mir leider nicht weiterhilft. Aber trotzdem danke.

    MfG marco



  • Jein, ich habe ein System zum dynamischen Nachladen von Klassen in C++ gebaut. Diese konnte ich dann ueber eine Lua-Console benutzen und verknuepfen. Jede Bibliothek hat eine Funktion register, die alle enthaltenen Klassen bei der Factory des Hauptprogramms angemeldet hat.



  • Marc-O schrieb:

    Achja wie ich mir gerade OSGI angeschaut habe ist mir aufgefallen, das ich vergessen habe zu erwähnen das es hier um ein C++ Plugin-System geht. In dem Fall von OSGI ist es für JAVA was mir leider nicht weiterhilft. Aber trotzdem danke.

    MfG marco

    Ich war der Meinung es gäbe auch eine osgi Implementierung für C++, aber da hab ich mich wohl geirrt 😮



  • Hi,

    wenn du OSGI für C++ suchst, dann kann dir vielleicht das weiterhelfen:
    http://sof.tiddlyspot.com/

    Hosted auf Sourceforge:
    https://sourceforge.net/projects/sof/


Log in to reply