Inhaltsverzeichnis

WvdS Add-in Host

Der WvdS Add-in Host (WBASH) ist die Laufzeitumgebung für native Erweiterungen der Wolf Business Application Shell. Er stellt ein dokumentenorientiertes Anwendungsgerüst bereit, in das Drittanbieter eigene Funktionalität einbringen, ohne die Shell selbst verändern zu müssen.

Dieses Kapitel beschreibt die Architektur, die Verträge und die Werkzeuge, die ein Add-in-Entwickler kennen muss, um eine Erweiterung zu erstellen, zu paketieren und zu verteilen.

Warum ein eigenes Add-in-Modell

Viele Anwendungen erlauben Erweiterungen über einfache DLL-Plugins: Der Host lädt eine Bibliothek, ruft eine Funktion auf und hofft, dass alles zusammenpasst. In der Praxis führt das zu Problemen. Unterschiedliche Compiler-Versionen erzeugen inkompatible Binaries. Fehlende Versionierung macht Updates riskant. Und wenn ein Plugin abstürzt, reißt es die gesamte Anwendung mit.

WBASH geht einen anderen Weg. Jedes Add-in wird als signiertes Paket ausgeliefert, das ein maschinenlesbares Manifest enthält. Der Host liest dieses Manifest, prüft Kompatibilität und Signatur, registriert die deklarierten Beiträge und lädt die eigentliche DLL erst dann, wenn sie tatsächlich gebraucht wird. Dadurch startet die Anwendung schnell, bleibt stabil und behält die Kontrolle über ihre Oberfläche.

Das Ergebnis ist ein System, das Drittanbietern echte Erweiterbarkeit bietet, gleichzeitig aber sicherstellt, dass die Shell konsistent, performant und wartbar bleibt.

Grundprinzipien

Das Add-in-Modell baut auf vier Grundprinzipien auf, die sich durch alle Schichten ziehen.

Manifest vor Code

Ein Add-in deklariert seine Fähigkeiten in einer JSON-Datei, bevor auch nur eine Zeile Code ausgeführt wird. Der Host weiß dadurch sofort, welche Menüpunkte, Toolbar-Buttons, Seitenleisten und Dokumenttypen ein Add-in beisteuert. Die Oberfläche steht vollständig, ohne dass eine DLL geladen werden muss. Erst wenn der Benutzer tatsächlich eine Funktion aufruft, wird das Add-in aktiviert. Dieses Prinzip hält den Start schnell und den Speicherverbrauch niedrig.

Host kontrolliert die Shell

Die Shell gehört dem Host. Dokument-Tabs, deren Aktivierung, Titel, Icon und Dirty-State, das Schließen von Dokumenten, die Layout-Persistenz, der Menü- und Toolbar-Merge sowie der Kontextwechsel zwischen Dokumenten — all das liegt in der Verantwortung des Hosts. Ein Add-in liefert Inhalt und Verhalten, niemals die Shell-Mechanik selbst. Dadurch bleibt die Anwendung konsistent, unabhängig davon, wie viele Add-ins installiert sind.

Klare Binärschnittstelle

Die Kommunikation zwischen Host und Add-in läuft über COM-artige Interfaces, nicht über rohe Strings oder dynamische Arrays. Jedes Add-in exportiert genau zwei Funktionen: eine für den ABI-Handshake und eine für die Plugin-Erzeugung. Der Handshake prüft Magic-Number, ABI-Version und Compiler-Version, bevor überhaupt ein Objekt erzeugt wird. Passt etwas nicht zusammen, wird das Add-in gar nicht erst geladen. Das verhindert Abstürze durch inkompatible Binaries zuverlässig.

Fehlerisolierung

Jeder Aufruf in Add-in-Code ist in eine Schutzschicht eingebettet. Wirft ein Add-in eine Exception, fängt der Host sie ab, protokolliert den Fehler und fährt mit den übrigen Add-ins fort. Nach drei aufeinanderfolgenden Fehlern deaktiviert der Host das betroffene Add-in automatisch und informiert den Benutzer. Ein fehlerhaftes Add-in kann die Anwendung nicht zum Absturz bringen.

Dokumentation

Die Dokumentation gliedert sich in folgende Bereiche:

Tutorials