Einleitung
Mit Version 11.0.0 wurde die Fusion API als neue einheitliche Schnittstelle eingeführt. Dieser Artikel erklärt, was die Fusion API ist, wie sie sich vom bisherigen WERBAS Gateway und der klassischen REST API unterscheidet, welche Kommunikationswege nebeneinander existieren und was im Mehr-BO-Server-Betrieb beachtet werden muss.
Begriffe im Überblick
Die folgenden Begriffe sind für das Verständnis der Architektur zentral.
WERBAS Gateway
Das WERBAS Gateway ist eine Schnittstelle des BO-Servers, die für interne Funktionen genutzt wird, zum Beispiel den Abruf von Server-Traces oder die Registrierung für die REST API. Die Kommunikation läuft über eine Message Queue auf Basis von RabbitMQ.
Fusion API
Die Fusion API ist die neue einheitliche Schnittstelle eines BO-Servers ab Version 11.0.0. Sie stellt sowohl bisherige Gateway-Funktionen als auch Funktionen der REST API über einen gemeinsamen Rahmen bereit. Das Gateway existiert damit nicht mehr als eigenständiger Kommunikationskanal, sondern als Kategorie innerhalb der Fusion API mit vergleichbaren Funktionen.
Zweiteilung der Fusion API
Der Begriff Fusion API bezeichnet zwei technisch unterschiedliche Komponenten, die sauber getrennt betrachtet werden müssen.
Zweiteilung der Fusion API
Teil |
Technik |
Rolle |
Server-Bind |
HTTP über Kestrel auf Port 8321 |
Eingehender Endpunkt je BO-Instanz |
| Fusion-Client | RabbitMQ-RPC | Transportweg für Client-Anfragen an den kundenspezifischen BO-Server |
Wesentliche Abgrenzung
Der Port 8321 ist nicht der eigentliche Weg, über den externe Client-Requests in den kundenspezifischen BO-Server gelangen. Diese Kommunikation läuft über den Message-Broker per RabbitMQ im RPC-Muster.
Erreichbarkeit
Sowohl das alte WERBAS Gateway als auch die MQ-Funktionalität der Fusion API sind über eine Message Queue erreichbar. Solange ein BO-Server mit dem Internet verbunden ist, ist er über diesen Weg ansprechbar. Bei der Fusion API gilt dies, sofern die MQ-Funktionalität nicht deaktiviert wurde.
Die drei Kommunikationswege im Überblick
Ab Version 11.0.0 existieren drei Kommunikationswege nebeneinander, die unterschiedliche Rollen erfüllen.
Kommunikationswege ab Version 11.0.0
Weg |
Transport |
Rolle |
Status ab Version 11.0.0 |
Fusion API |
RabbitMQ-RPC plus HTTP-Bind auf Port 8321 |
Neue einheitliche Client-Schnittstelle |
Neu ab 11.0.0 |
WERBAS Gateway (MQ) |
RabbitMQ für ältere Gateway- und Reporting-Methoden |
Bisheriger MQ- und Gateway-Weg |
Weiterhin vorhanden, parallel |
| Klassische REST API | HTTPS über Port 8085 | REST-Endpunkte für Cloud und WERBAS.blue | Weiterhin vorhanden, parallel |
Tooling – Welches Werkzeug nutzt welchen Weg
Die folgende Übersicht zeigt, welche Werkzeuge auf welchen Kommunikationsweg aufsetzen.
Werkzeuge und Kommunikationswege
Werkzeug |
Nutzt welchen Weg |
Hinweis |
MQ-Manager |
Altes WERBAS Gateway |
Ab Version 11 ist ein BO-Server hierüber nicht mehr erreichbar |
CRM (WERBAS.blue) |
Gateway-Funktionen |
Nicht alle Funktionen verfügbar; teilweise berechtigungsabhängig |
System Insights |
Fusion API |
Nutzt die Gateway-Endpunkte über die Fusion API |
| C#-Client (NuGet) | Fusion API | Kann in eigene Anwendungen integriert werden und alle Funktionen der Fusion API nutzen |
Mehr-BO-Server-Betrieb
Im Betrieb mit mehreren BO-Servern müssen die Kommunikationswege gezielt gesteuert werden, um Konflikte bei der Nachrichtenverarbeitung zu vermeiden.
WERBAS Gateway (alt)
Das alte Gateway darf nur an einem einzigen BO-Server aktiviert sein. Sind mehrere Instanzen gleichzeitig aktiv, entsteht unerwartetes Verhalten bei der Verarbeitung der Nachrichten in der Queue. Die Steuerung erfolgt über das Deaktivieren der REST API an allen Sekundär-Instanzen, wodurch auch das Gateway deaktiviert wird.
Fusion API
Die MQ-Funktionalität der Fusion API darf aktuell ebenfalls nur an einem BO-Server aktiv sein. Ein zweiter BO-Server wird technisch daran gehindert, auf Nachrichten in derselben Queue zu hören. Dennoch können unterschiedliche Startreihenfolgen der Server zu unerwünschtem Verhalten führen. Die Konfiguration muss daher bewusst gesteuert werden.