Seite 1 von 1

Plugin System

Verfasst: 13.02.2009 09:14
von Hoto
Bin gerade am planen eines etwas größeren Projekts und würde dort gerne in der finalen Version sowohl auf Input als auch Output Plugins setzen. Aktuell frage ich mich nun, ob man eine solche Unterstützung von Anfang an mit einplanen und einbauen sollte oder ob man dies auch später umsetzen kann ohne auf all zu große Probleme dabei zu stoßen?

Bisher hab ich auf dem Gebiet absolut null Ahnung, weiß daher auch nicht auf was ich bei sowas achten muss, daher diese vielleicht auch durchaus mögliche blöde Frage.

Verfasst: 13.02.2009 09:59
von Tafkadasom2k5
Hi, Hoto!

Das kommt ganz darauf an, was es werden soll, und wie du die Umsetzung planst.

Ein Pluginsystem zu relisieren bedarf immer ein bisschen Weitblick- spätestens dann, wenn du merkst, dass dein bisheriges System nicht mehr ausreicht, musst du teilweise das gesamte Pluginsystem inklusive DLLs neuschreiben.

Aber eine Idee ist es, die Grundfunktionalitäten des Programmes, intern auch wie Plugins zu behandeln. Also so, dass du quasi eine Schnittstelle baust, und über diese Schnittstelle deine (Grund-)Funktionen ansprichst, obwohl die Grundfunktionen in der gleichem EXE kompiliert sind. Natürlich ist diese Methode nur zu empfehlen, sofern das ncht unbedingt zu Lasten der Geschwindigkeit geht.

Das hat folgende Vorteile:
Wenn du von Anfang an auf Strikte Trennung deiner Funktionen achtest, so kannst du später unter Umständen leichter expandieren.

Sofern du das Pluginsystem wirklich einbaust, musst du nicht mehr viel hinzubauen, um Plug-Ins laufen zu lassen (sprich: Nur noch das Laden der DLL Datei davorschrauben).

Strikte Trennung von Hostprogramm (Fenster, Anzeige, Menüs etc) und Funktionalitäten.

---

Nachteile wären:
Man kann "Nicht eben schnell" einen Bug heraushacken, indem man quick-and-dirty eine Funktion hinzubaut (Plugin-B hat beispielsweise keinen Zugriff auf die Variablen von Plugin-A).

Man ist auf die eigene Weitsicht des Systems angewiesen. Wenn man im späteren Verlauf der Programmierung bemerkt, dass das bisherige PluginSystem nicht ausreicht, so muss man unter Umständen eine Menge umschreiben.

Das ist natürlich alles eine Menge Theorie und wenig Code, aber mehr kannst du auch bei den bisher gegebenen Informationen von dir noch nicht erwarten ;)

Gr33tz
Tafkadasom2k5

Verfasst: 13.02.2009 11:05
von Hoto
Nein, nein, das ist schon ok so, mir ging es auch erstmal nur um die Theorie und weniger um Code. Bevor ich die Theorie nicht richtig begriffen hab bringt ja Code nichts. ;)

Sowas in der Art hab ich mir aber schon gedacht. Da muss ich mir mal überlegen was fest im Programm und was man per Plugins hinzufügen können soll. Ich werds aber wohl doch erst später einbauen, weil bei dem Programm Umfang kann ich jetzt schon schlecht einschätzen, wie das Plugin System aufgebaut sein muss und am Ende wären dann die Plugins ständig inkompatibel, das wäre ja auch nicht der Sinn der Sache.

Gibts eigentlich auf dem Gebiet irgendwelche möglichst deutschen Theorie Tuts im Netz?

Verfasst: 13.02.2009 11:12
von ts-soft
Du solltest nur die GUI und das PluginSystem selbst fest programmieren,
den Rest bauste gleich so auf, wie ein Plugin, so merkste sofort was in die
Schnittstelle implementiert werden muß, macht zwar anfangs mehr Arbeit,
aber später spart es eine Menge Arbeit.

Verfasst: 13.02.2009 11:49
von Little John
ts-soft hat geschrieben:Du solltest nur die GUI und das PluginSystem selbst fest programmieren,
den Rest bauste gleich so auf, wie ein Plugin
Das halte ich in Bezug auf ein ernsthaftes, größeres Projekt für einen sehr klugen Ratschlag, wenn ich das mal so sagen darf. ;-)

Verfasst: 13.02.2009 14:27
von Hoto
@ts-soft: also im Grunde sozusagen nur eine Art Einstellungsseite für die Plugins und alle anderen Funktionen direkt in Plugins? Ich mein mehr geht ja eigentlich nicht mehr auszulagern.

Noch fehlt mir aber etwas der Durchblick wie ich das dann umsetzen muss, vor allem, dass dann auch für andere Programmierer brauchbar ist, die dann selbst ein Plugin machen wollen. Da sollte man sich ja dann an einen gewissen Standard halten oder benutzt da jedes Programm, das Plugins nutzen, seinen eigenen Pseudo Standard?

Verfasst: 13.02.2009 14:37
von ts-soft
Hoto hat geschrieben:oder benutzt da jedes Programm, das Plugins nutzen, seinen eigenen Pseudo Standard?
So sieht es aus. Eine bzw. mehrere sehr gute Plugin-Schnittstellen hat z.B.
mein geliebter TotalCommander. Mußte einfach mal die SDKs von
Programmen mit PluginSchnittstelle laden und schnüffeln :wink:

Verfasst: 13.02.2009 15:16
von Little John
Hoto hat geschrieben:Noch fehlt mir aber etwas der Durchblick wie ich das dann umsetzen muss, vor allem, dass dann auch für andere Programmierer brauchbar ist, die dann selbst ein Plugin machen wollen. Da sollte man sich ja dann an einen gewissen Standard halten oder benutzt da jedes Programm, das Plugins nutzen, seinen eigenen Pseudo Standard?
Du kannst das entscheiden wie Du willst, und alles so festlegen wie es eben für die Zwecke Deines Programms sinnvoll ist. Das ist dann die Spezifikation ("(Pseudo-) Standard" passt hier nicht) der Plugin-Schnittstelle(n) Deines Programms.
Wichtig für die Plugin-Programmierer ist eine sorgfältige Dokumentation der Schnittstellen.

Gruß, Little John

Verfasst: 13.02.2009 16:59
von Bisonte
Und Idio*ensicher muss das sein... Hatte mich auch mal an sowas versucht.
Die Fehlerabfangprogrammierung nahm die meiste Zeit in Anspruch ;)