"micokernel" Plugin-System zur Anwendungsentwicklu
Verfasst: Mittwoch 28. Januar 2009, 11:02
Hallo zusammen,
gestern Abend machte ich mir Gedanken darüber, wie ich das Plugin-System meiner mittlerweile immer größer werdenden Audioplayers konsequenter umsetzen könnte.
Zur Zeit ist es so, dass erst die Fenster-Klasse und dann eine Hauptklasse initialisiert wird. Diese Hauptklasse lädt alle möglichen weitere Klassen, etwa für eine Datanbankanbindung, für Internetkommunikation, für Events und eben auch für meine Plugins.
Die meisten Erweiterungen, die ich nun noch an meinem Player vornehme, kommen als Plugins daher, die dynamisch eingebunden werden. So erhoffe ich mir, den Hauptcode zu entrümpeln und übersichtlicher zu gestalten. Deaktiviert man alle Plugins, ist der Player ziemlich schlank und "funktionslos".
Nun meine Überlegung: Eigentlich wäre es doch sinnvoll, statt der Hauptklasse bzw. des Fensters gleich das Plugin-System zu initialisieren. Dies könnte die Basis des Programmes sein und alle weiteren Klassen als Plugins nachladen - etwa das Fenster.
Ich verspreche mir dadurch eine noch deutlichere Struktur, die noch einfacher zu erweitern ist. Auch ließe sich so ggf. schnell ein anderes Toolkit einbinden - als z.B. QT statt GTK.
Für die Umsetzung habe ich mir überlegt, zwischen "essential" und "optional" Plugins zu unterscheiden. Essentielle Plugins können nicht deaktiviert werden und bilden die Basis des Programmes. Optionale Plugins wären die "klassichen" Plugins. Wie auch bei den meisten anderen Plugin-Systemen üblich, haben diese eine XML oder ähnliches, die fest legt, in welcher Reihenfolge das jeweilige Plugin gestartet wird. Ggf. ließe sich sogar ein Abhängigkeiten-System integrieren, das etwa ein Plugin nur dann lädt, wenn das benötigte "GTK" Plugin ebenfalls aktiviert wurde.
Nachteil dieser Methode ist sicher ein tendenziell größerer Overhead.
Da ich kein in diesem Bereich keine Erfahrungen habe und nicht weiß, welche "Schulen" es diesbezüglich in der Informatik gibt, wollte ich mal anfragen, was ihr davon haltet.
schöne Grüße,
Barabas
gestern Abend machte ich mir Gedanken darüber, wie ich das Plugin-System meiner mittlerweile immer größer werdenden Audioplayers konsequenter umsetzen könnte.
Zur Zeit ist es so, dass erst die Fenster-Klasse und dann eine Hauptklasse initialisiert wird. Diese Hauptklasse lädt alle möglichen weitere Klassen, etwa für eine Datanbankanbindung, für Internetkommunikation, für Events und eben auch für meine Plugins.
Die meisten Erweiterungen, die ich nun noch an meinem Player vornehme, kommen als Plugins daher, die dynamisch eingebunden werden. So erhoffe ich mir, den Hauptcode zu entrümpeln und übersichtlicher zu gestalten. Deaktiviert man alle Plugins, ist der Player ziemlich schlank und "funktionslos".
Nun meine Überlegung: Eigentlich wäre es doch sinnvoll, statt der Hauptklasse bzw. des Fensters gleich das Plugin-System zu initialisieren. Dies könnte die Basis des Programmes sein und alle weiteren Klassen als Plugins nachladen - etwa das Fenster.
Ich verspreche mir dadurch eine noch deutlichere Struktur, die noch einfacher zu erweitern ist. Auch ließe sich so ggf. schnell ein anderes Toolkit einbinden - als z.B. QT statt GTK.
Für die Umsetzung habe ich mir überlegt, zwischen "essential" und "optional" Plugins zu unterscheiden. Essentielle Plugins können nicht deaktiviert werden und bilden die Basis des Programmes. Optionale Plugins wären die "klassichen" Plugins. Wie auch bei den meisten anderen Plugin-Systemen üblich, haben diese eine XML oder ähnliches, die fest legt, in welcher Reihenfolge das jeweilige Plugin gestartet wird. Ggf. ließe sich sogar ein Abhängigkeiten-System integrieren, das etwa ein Plugin nur dann lädt, wenn das benötigte "GTK" Plugin ebenfalls aktiviert wurde.
Nachteil dieser Methode ist sicher ein tendenziell größerer Overhead.
Da ich kein in diesem Bereich keine Erfahrungen habe und nicht weiß, welche "Schulen" es diesbezüglich in der Informatik gibt, wollte ich mal anfragen, was ihr davon haltet.
schöne Grüße,
Barabas