Sidecar-Konnektoren
Ein Sidecar-Konnektor ist ein Protokoll, das als Plugin mit eigenem Prozess dazukommt. Der TCP-Konnektor ist das erste Beispiel; OPC UA und Feldbusse sind für denselben Weg gedacht.
Warum ein eigener Prozess
Abschnitt betitelt „Warum ein eigener Prozess“Ein Konnektor braucht das Gegenteil einer Sandbox: freies Netz, eigene Bibliotheken, oft Python. Deshalb läuft sein Code nicht im Programm, sondern daneben — ein Prozess je Plugin. Stürzt er ab, steht nur dieser Konnektor still.
Das Formular ist trotzdem immer da
Abschnitt betitelt „Das Formular ist trotzdem immer da“Was ein Protokoll an Feldern braucht, steht als Daten im Manifest des Plugins, nicht im laufenden Prozess. Das ist bewusst so:
- Sie sehen das Verbindungsformular auch dann, wenn der Prozess gerade nicht läuft — sonst bekäme man eine leere Seite genau in dem Moment, in dem man den Fehler beheben will.
- Verbindungen und Tags tragen die Kennung des Konnektors in ihrer Konfiguration. Deren Bedeutung darf nicht davon abhängen, ob irgendwo ein Prozess lebt.
Ein Konnektor kann deshalb auch rein beschreibend sein, ganz ohne eigenen Prozess.
Wann ein Protokoll erscheint und wann es verschwindet
Abschnitt betitelt „Wann ein Protokoll erscheint und wann es verschwindet“| Vorgang | Folge |
|---|---|
| Plugin installiert, aber ausgeschaltet | das Protokoll erscheint nicht im Formular |
| Plugin eingeschaltet | Protokoll erscheint sofort, ohne Neustart; sobald das Backend läuft, wird auch die Laufzeit gestartet |
| Anlage neu gestartet | beides kommt wieder, aus der Plugin-Registrierung |
| Plugin aktualisiert | alte Laufzeit wird beendet, die neue Fassung meldet ihre Typen neu an |
| Plugin ausgeschaltet oder deinstalliert | Protokoll verschwindet aus dem Formular, die Laufzeit wird sauber beendet |
Vorhandene Verbindungen und Tags bleiben in allen Fällen gespeichert. Sie werden nur nicht mehr bedient, solange das Plugin aus ist.
Rechte und Nachvollziehbarkeit
Abschnitt betitelt „Rechte und Nachvollziehbarkeit“- Ein Paket, das eine eigene Verbindung halten will, muss
net:socketim Manifest führen. Fehlt die Berechtigung, bekommt der Konnektor keine Laufzeit — das wird im Protokoll benannt. - Werte, die ein Plugin-Konnektor in Tags schreibt, gehen durch dieselbe geprüfte Tür wie jeder andere Plugin-Zugriff. Es zählt, was das Manifest bei der Installation zugestanden bekommen hat, und jeder Schreibvorgang hinterlässt einen Audit-Eintrag, der das Plugin nennt.
- Was nachts von selbst hereinkommt, wird als Maschine protokolliert und nicht unter dem Namen der Person, die zuletzt in der Oberfläche war.
Was der Host entscheidet und was das Plugin
Abschnitt betitelt „Was der Host entscheidet und was das Plugin“Das Plugin hält den Socket und meldet, was ankam: „auf Verbindung X kam dieses Telegramm.” Welches Tag das ist, entscheidet TrakState anhand der Tag-Konfiguration. Das Plugin kennt keine Tag-Pfade und muss deshalb auch bei jeder Änderung nicht nachgeführt werden.
Wenn ein Typ gar nicht auftaucht
Abschnitt betitelt „Wenn ein Typ gar nicht auftaucht“Meldet ein Plugin einen Konnektor-Typ an, der die Regeln verletzt — eine schon vergebene Kennung, eine unzulässige Kennung, ein unzulässiger Feldname —, wird er abgelehnt. Das Plugin bleibt eingeschaltet, der Typ erscheint einfach nicht, und der Grund steht im Protokoll der Anlage.