Freigeben über


Senden von SOAP-Nachrichten

Es gibt viele Möglichkeiten, das Senden empfangener SOAP-Nachrichten an den entsprechenden Dienst zu verarbeiten. Die zwei einfachsten Mechanismen sind die Versendung auf Transportebene sowie der Adress- und Aktionsversand.

Versand auf Transportebene

Beim Versand 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 eine andere URL für jeden Dienst und für das Gerät bereit, und für jede URL werden verschiedene Senken registriert. Dadurch kann Code so entworfen werden, dass jeder Dienst vom anderen isoliert wird, entweder als separate Komponenten innerhalb desselben Prozesses ausgeführt oder als separate Prozesse ausgeführt wird.

Der Versand auf Transportebene hat einige Vorteile. Nachrichten können an die entsprechende Komponente gesendet werden, ohne zuerst den SOAP-Umschlag oder den Nachrichtentext zu analysieren. Außerdem kann der vorhandene Mechanismus zum Weiterleiten von Nachrichten, die von den meisten HTTP-Serverimplementierungen bereitgestellt werden, wiederverwendet werden, was bedeutet, dass benutzerdefinierter Verteilungscode nicht erforderlich ist. Außerdem wird der SOAP-Verarbeitungscode zwischen Diensten isoliert, was ein Maß an Sicherheit bietet, da sichere Dienste verhindern, dass Nachrichten durch allgemeinen Code übertragen werden.

Adress- und Aktionsversand

Der Adress- und Aktionsversand basiert auf den SOAP-Headern, um den geeigneten Dienst zu bestimmen, an den die Nachricht gesendet wird. Dieses Modell kann auch zusätzliche Informationen wie Verweisparameter verwenden, um die Verteilung 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. Adress- und Aktionsversand werden auch direkter in ein Programmiermodell übersetzt. Entwickler können Dienste und Geräte in eine einzelne Komponente einbinden, die das Routing verwaltet, anstatt sich an eine HTTP-Ebene binden oder separate Komponenten für jeden Dienst erstellen zu müssen.