Das Format der SOAP-Nachrichten wird in einer WSDL-Definition beschrieben, d. h., der Broker muss Zuordnungen zwischen der WSDL-Definition und dem von ihm verwendeten Nachrichtenmodell herstellen können, um die betreffenden Nachrichten zur Laufzeit zu analysieren. In diesem Abschnitt werden die wichtigsten Beziehungen zwischen der WSDL-Definition und dem Nachrichtenmodell beschrieben.
Die physischen Teile der WSDL-Definition werden im Brokermodell nicht dargestellt, so dass nur die WSDL-Definitionen 'operation', 'message' und 'part' berücksichtigt werden müssen. Ausgehend von den logischen Bausteinen auf den niedrigeren Ebenen beschreibt eine WSDL-Definition Folgendes:
Der WSDL-Generator verwendet Nachrichtenkategorien, um die erforderlichen WSDL-Operationen zu definieren. Nachrichtenkategorien haben jedoch keine Laufzeitbedeutung im Brokernachrichtenmodell und werden beim Importieren der WSDL-Definition nicht erstellt.
Die Beziehung zwischen einer Nachrichtenkategorie und dem Brokernachrichtenmodell ist vom WSDL-Format abhängig:
Das einzige untergeordnete Element von <soap:Body> stellt den RPC-Aufruf (Funktionsaufruf) dar und wird als RPC-Wrapper oder -Zugriffsmechanismus bezeichnet. Der Name des RPC-Zugriffsmechanismus ergibt sich aus dem Namen der WSDL-Operation und sein Namespace aus dem Namespace-Attribut (namespace) in der <soap:body>-Definition, die nur für das RPC-Format verwendet wird. Die untergeordneten Elemente des RPC-Zugriffsmechanismus stellen die Parameter des RPC-Aufrufs dar. Die Namen der untergeordneten Elemente ergeben sich aus den 'part'-Namen in der entsprechenden WSDL-Nachrichtendefinition. Diese sind für den RPC-Zugriffsmechanismus lokal und haben keinen Namespace.
SOAP-Header und 'fault'-Elemente können in Verbindung mit Nachrichten im RPC-Format verwendet werden. Diese können aber nicht Parametern im RPC-Format zugeordnet werden und müssen gemäß WS-I Basic Profile das Dokumentformat verwenden.
Die ausgetauschten Nachrichten werden durch ein XML Schema vollständig beschrieben (nur 'literal'-Codierung zulässig). Es werden keine 'part'-Elemente der SOAP-Nachricht von WSDL-Objekten abgeleitet, z. B. 'operation'- und 'part'-Namen.
Das WS-I Basic Profile legt fest, dass eine Nachricht im Dokumentformat nur einen einzigen Hauptteil enthalten darf. Das Element 'SOAP-ENV:Header' kann mehrere untergeordnete Elemente (Headerblöcke) enthalten. Die 'fault'-Detailnachricht wird durch ein einzelnes 'part'-Element der WSDL-Nachricht definiert.
In jedem Einzelfall wird das Elementschema durch das in der 'part'-Definition der WSDL-Nachricht referenzierte Element definiert und gehört zum Ziel-Namespace (targetNamespace) des <schema>, das das Element definiert.
Das auf diese Weise erstellte Modell ermöglicht es dem Benutzer, eingehende SOAP-Nachrichten mit dem MRM-XML-Parser zu analysieren, wobei es sich um den Nachrichtentyp 'Envelope' handelt. Das Nachrichtenmodell für die SOAP-Rahmenanweisung (Envelope) definiert den äußeren SOAP-Wrapper mit seinen festen Header- und Body-Abschnitten und eine Anzahl von Anschlusspunkten für die verschiedenen Geschäftsnutzdaten. Diese Anschlusspunkte werden mit Zusammensetzung 'message' definiert, so dass die vom WSDL-Importprogramm oder -Generator erstellten Brokernachrichten an diesen Punkten auftreten können.
Die Tabelle zeigt die Anschlusspunkte und die möglichen Anschlüsse an jedem einzelnen Punkt.
WSDL-Format | ||
---|---|---|
Anschlusspunkt | rpc | document |
Envelope.Body | einzelner operation-Zugriffsmechanismus | sollte einzelnes untergeordnetes Element haben |
Envelope.Header | kann mehrere untergeordnete Elemente haben, einschließlich Duplikate | kann mehrere untergeordnete Elemente haben, einschließlich Duplikate |
Envelope.Body.Fault.detail | sollte einzelnes untergeordnetes Element haben | sollte einzelnes untergeordnetes Element haben |