Senden von SOAP-Nachrichten
Es gibt viele Möglichkeiten, das Senden empfangener SOAP-Nachrichten an den entsprechenden Dienst zu verarbeiten. Die beiden einfachsten Mechanismen sind Dispatch auf Transportebene sowie Adress- und Aktionsversand.
Dispatch auf Transportebene
Bei der Weiterleitung auf Transportebene wird der zugrunde liegende HTTP-Server (z. B. die HTTP-API)verwendet, um das Routing von Anforderungen an das Gerät und seine Dienste zu verwalten. Der Server stellt für jeden Dienst eine andere URL zur Verfügung, und für das Gerät werden unterschiedliche Senken für jede URL registriert. Dadurch kann Code so entworfen werden, dass jeder Dienst vom anderen isoliert ist, entweder als separate Komponenten innerhalb desselben Prozesses oder als separate Prozesse ausgeführt wird.
Die Versendung auf Transportebene hat einige Vorteile. Nachrichten können an die entsprechende Komponente gesendet werden, ohne zuerst den SOAP-Umschlag oder Nachrichtentext zu analysen. Außerdem kann der vorhandene Mechanismus zum Weiterleiten von Nachrichten, die von den meisten HTTP-Serverimplementierungen bereitgestellt werden, wiederverwendet werden, was bedeutet, dass benutzerdefinierter Dispatchcode nicht erforderlich ist. Außerdem wird der SOAP-Verarbeitungscode zwischen Diensten isoliert, was ein Maß an Sicherheit bietet, da sichere Dienste vermeiden, dass Nachrichten durch allgemeinen Code gesendet werden.
Adress- und Aktionsversand
Die Adress- und Aktionssendung basiert auf den SOAP-Headern, um den entsprechenden Dienst zu bestimmen, an den die Nachricht gesendet wird. Dieses Modell kann auch zusätzliche Informationen wie Verweisparameter verwenden, um die Dispatching weiter zu unterstützen.
Dieses Modell fördert die Wiederverwendung von Code in einem mehrschichtigen Messagingstapel, da der gesamte Code bis zum SOAP-Prozessor von allen Diensten gemeinsam genutzt wird. Außerdem sind keine unterschiedlichen Transportadressen für Dienste erforderlich, was bedeutet, dass UUID-Adressen für Dienstendpunkte verwendet werden können. Die Adress- und Aktionssendung wird auch direkter in ein Programmiermodell übersetzt. Entwickler können Dienste und Geräte in eine einzelne Komponente verbinden, die das Routing verwaltet, anstatt eine HTTP-Ebene zu binden oder separate Komponenten für jeden Dienst zu erstellen.