Autor Beitrag
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Sa 15.11.14 18:42 
Hi,

mich beschäftigt zur Zeit die Frage, wie man am besten eine Schnittstelle für Plugins erstellen kann.
Grob würde ich das so realisieren, dass ich einige grobe Funktionen über ein Interface definiere, die jedes Plugin dann implementieren muss, sowie auch eine Schnittstelle der Anwendung selber, die dann von jedem Plugin genutzt werden kann.
Wie das konkret aussieht, hängt sicherlich stark von der Anwendung selber und den konkreten Anforderungen ab, mich plagt eher die Frage, wie die Daten von einem Plugin gehalten werden sollten.

Im Ideal stelle ich mir das so vor, dass es ein Repository gibt, über das jedes Plugin die Daten einer zentralen Datenbank nutzen kann - zumindest wenn es das passende Interface dafür kennt.
Nun möchte ich das Ganze aber zur Laufzeit flexibel gestalten, also dass eine Tabelle nicht existieren muss, sondern erst erstellt wird, wenn sie gebraucht wird.



Wie wird das in der Regel realisiert, gibt es dafür ein oder mehrere Vorgehensmuster, die sich etabliert haben?
Gibt es ein Framework, das wie ein ORM funktioniert und auch DDL unterstützt?
Muss ich ohne tatsächliche Tabellen auskommen, sondern sie nur allgemein gültig faken (z.B. eine PluginTables-Tabelle, Column-Tabelle und Values-Tabelle)
Bietet sich eher eine eine nicht-relationale Datenbank an?
Oder sollte ich lieber verlangen, dass jedes Plugin eine eigene Datenbank mit bringt?


Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 16.11.14 20:26 
Zitat:
Wie wird das in der Regel realisiert, gibt es dafür ein oder mehrere Vorgehensmuster, die sich etabliert haben?
Gibt es ein Framework, das wie ein ORM funktioniert und auch DDL unterstützt?
Muss ich ohne tatsächliche Tabellen auskommen, sondern sie nur allgemein gültig faken (z.B. eine PluginTables-Tabelle, Column-Tabelle und Values-Tabelle)
Bietet sich eher eine eine nicht-relationale Datenbank an?


Was was? Für relationale Daten bieten sich am besten relationale Datenbanken an ;) Das hilft dir jetzt nicht aber du siehst das wir keine Chance haben deine Frage zu beantworten da wir dein Problem nicht kennen. Wenn ein Plugin von der eigentlichen Applikation unabhängige Daten ablegen soll macht es das wohl am besten selbst. Denn nur es selbst kann dann die passende Struktur im passende Format wählen und man verunstaltet das Plugin Interface nicht mit einer generischen Datenableg Schnittstelle. Wenn ein Plugin am eigenen Modell der Applikation schrauben können soll musst du entsprechende Vorgaben machen und dann das passende Interface bieten. Die Schwierigkeit wird dann wohl vor allem sein dem Plugin über diese Schnittstelle die notwendige Flexibilität zu geben aber gleichzeitig zu verhindern das es das Modell nicht ~zerstört~.
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: So 16.11.14 22:13 
Okay, dann kapsel ich die Datenebene soweit ab, wie ich kann und die Plugins nehmen ihre eigene Datenbank mit.
Wirklich brauchen tue ich das nicht, es gibt mir eher um das meist verbreitete Vorgehen.


Auf jeden Fall Danke für die Antwort :)