Erstellen von Service Broker-Nachrichtentypen

Mit einem Nachrichtentyp werden der Name einer bestimmten Art von Nachricht und die Überprüfung festgelegt, die Service Broker für diese Art von Nachricht ausführt. Zur Bestimmung der in Ihrer Anwendung verwendeten Nachrichtentypen planen Sie zuerst die Tasks, die die Anwendung ausführen muss, sowie die Daten, die zur Ausführung der einzelnen Tasks erforderlich sind.

Für Anwendungen besteht der gängigste Ansatz darin, die Nachrichten zu strukturieren, sodass jede Nachricht die für einen Schritt des Tasks erforderlichen Informationen umfasst. Wenn jede Nachricht die Informationen für einen Schritt des Tasks enthält, kann die Anwendung problemlos in einer einzigen Transaktion die Nachricht empfangen, den Schritt ausführen und eine Antwort senden. Bei vielen Anwendungen können Sie daher die Nachrichtentypen und den Inhalt für die Nachricht am einfachsten ermitteln, indem Sie die Transaktionsgrenzen für die von der Anwendung ausgeführten Tasks bestimmen. Jeder einzelne Schritt ist eine Transaktion, und jede Transaktion entspricht einem zwischen Diensten ausgetauschten Nachrichtentyp. Bei Statusinformationen, Ergebnissen oder Ausgaben handelt es sich ebenfalls um Nachrichtentypen.

Die Service Broker-Kommunikationsprotokolle wurden für die Verwendung dieses Messagingformats entworfen. Das Dialogprotokoll fragmentiert umfangreiche Nachrichten für die Übertragung und garantiert so, dass große Nachrichten nicht die Übermittlung kleiner Nachrichten verhindern.

Auswählen eines Überprüfungstyps

Welche Überprüfung für die Nachricht angegeben wird, hängt vom Inhalt der Nachricht ab. Üblicherweise wird beim Testen die restriktivste verfügbare Überprüfungsmethode verwendet und anschließend eine weniger restriktive Überprüfung gewählt, um die Leistung bei der Bereitstellung der Anwendung zu verbessern. Es ist beispielsweise möglich, ein typisiertes XML-Dokument als Text einer Nachricht zu übermitteln, der für die Überprüfung NONE angibt. In diesem Fall überprüft die Anwendung die Nachricht beim Verarbeiten des XML-Codes.

Das Netzwerkformat für eine Nachricht enthält den Namen des Nachrichtentyps. Deshalb werden oft Namen für Nachrichtentypen ausgewählt, um Sortierungsprobleme und Namenskonflikte zu vermeiden. Weitere Informationen zur Benennung finden Sie unter Benennen von Service Broker-Objekten.

Angeben von Erfolg und Fehlschlagen

In einer Anwendung werden gewöhnlich keine neuen Nachrichtentypen definiert, die den Erfolg oder das Fehlschlagen eines Tasks angeben. Geben Sie stattdessen mithilfe der END CONVERSATION-Anweisung an, dass eine Konversation abgeschlossen und der Task erfolgreich ausgeführt wurde. Wenn der Task fehlgeschlagen ist, schließen Sie die WITH ERROR-Option ein, damit eine Fehlermeldung für die Konversation zurückgegeben wird.

Im Allgemeinen sollte nur einer der Konversationsteilnehmer die Konversation beenden, wenn der Task abgeschlossen ist. Der andere Teilnehmer gibt als Reaktion auf eine Nachricht über das Beenden des Dialogs oder eine Fehlermeldung nur eine END CONVERSATION-Anweisung aus. In der Dokumentation für einen Dienst ist im Allgemeinen angegeben, welcher Teilnehmer die Konversation beendet, falls die Konversation erfolgreich abgeschlossen wird. Die Bereitstellung dieser Dokumentation hilft bei der Vermeidung von Problemen, wenn keiner der Teilnehmer die Konversation beendet oder wenn ein Teilnehmer die Konversation beendet, während der andere Teilnehmer noch Tasks ausführt. Beide Endpunkte müssen Fehlermeldungen verarbeiten können, weil interne Service Broker-Nachrichten an beide Endpunkte übermittelt werden. Läuft die Lebensdauer des Dialogfelds beispielsweise ab, bevor das Dialogfeld geschlossen wird, erhalten beide Endpunkte eine Fehlermeldung von Service Broker.

Jeder Teilnehmer kann eine Konversation jederzeit mit einem Fehler beenden. Eine Erläuterung zur Behandlung von Service Broker-Fehlermeldungen finden Sie unter Behandeln von Service Broker-Fehlermeldungen.