Hallo Klaus,
Im ersten Fall könnte also auch die
Hauptapplikation bzw. auch die Konfigurationsapplikation diesen Pfad
berechnen, wodurch der Handler keine Notwendigkeit mehr hat.
Da hast du natuerlich recht :)
Interessant wäre es m.E., wenn Du es schaffen würdest, die Plugins so zu
schreiben, daß sie quasi selbstbeschreibend werden. Irgendwie muß ja das
Plugin die für sie vorgesehenen Direktiven auch verarbeiten können. Dafür
sind, so denke ich, interne Datenstrukturen notwendig, um die Einstellungen
zur Laufzeit verfügbar zu halten. Was wenn diese Datenstrukturen so
gestaltet sind, daß eine funktion deren möglichen Inhalt auslesen und in
Form einer Direktiven-Definition ausgibt.
Ich glaube, das waere etwas kompliziert. Nicht nur ich will ja Plugins
schreiben, sondern auch fremde Leute. Und man muss die API ja auch verstehen
und moeglichst einfach anwenden koennen.
Ich habe vor kurzem noch einen anderen Weg beschritten. Es ging dabei um
eine Dateninterface für eine C++-Anwendung. Dafür habe ich die
Datenstrukturbeschreibung (inklusive UI-Interface-Definition) in einer
Konfigurationsdatei abgelegt, und dann mittels Perl-Script den notwendigen
C++-Code generiert. Für das dann noch notwendige HTTP-Interface, über das
die Daten Synchronisiert werden, wird die Konfigurationsdatei auch gleich
mit verwendet.
Das kann ich so nicht machen. Ich muss Plugins registrieren koennen, ohne
gleich die ganze Applikation neu zu uebersetzen. Sie hat eh schon etwa 10k
Zeilen. Nein, ich denke, der Momentane Mechanismus ist ganz iO so, wie er ist.
Ich glaube, XML winkt :)
Wobei mir die Idee mit einer DTD für die Beschreibung der Direktiven recht
gut gefällt. Und es hat ja keiner gesagt, dßa eine DTD nicht auch dynamisch
generiert werden darf, oder?
Oh, das muss sie gar nicht. Wenn ein Modul sich aendert, muss eben die
XML-Datei geaendert werden.
Daß sich dann für die Konfigurationsdirektiven XML praktisch aufdrängt, ist
ja eine andere Geschichte.
Fuer die Konfigurations-Direktiven benutze ich ein eigenes, Apache-aehnliches
Format mit einem selbst geschriebenen Konfigurations-Parser :) Im Moment sieht
eine typische "Beschreibungs-Datei" (wie koennte man sie sonst nennen?) so
aus:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE modcfg SYSTEM "modcfg.dtd">
<modcfg name="modul_name">
<directive name="Direktiven-Name" arguments="1"> <!-- mit arguments kann man die Anzahl der Argumente, die eine Direktive erwartet, festlegen -->
<validate>^(?:yes|no)$</validate> <!-- regex zum validieren der Eingabe -->
<question>Frage</question> <!-- Das wird in der Datei gefragt -->
<formvalues type="radio"> <!-- Im Formular eine Radio-Box -->
<value val="yes">Geöffnet</value> <!-- mit den Werten 'Geöffnet' -->
<value val="no">Geschlossen</value> <!-- und 'Geschlossen' -->
</formvalues>
</directive>
</modcfg>
Viel Erfolg bei Deiner Anwendung
Danke sehr!
Gruesse,
CK