Erstellen von Service Broker-Anwendungen

Dieser Abschnitt enthält eine allgemeine Übersicht über die Struktur einer Service Broker-Anwendung. Er erläutert einige der gängigsten Strategien zum Starten einer Anwendung, in der Service Broker verwendet wird, und beschreibt die grundlegenden Schritte zum Empfangen und Verarbeiten von Nachrichten.

Die Anwendung für einen initiierenden Dienst gibt mithilfe der BEGIN DIALOG-Anweisung Informationen über die Dienste an den einzelnen Endpunkten und den Dienstvertrag an, den sie zum Kommunizieren verwendet. Mit der SEND-Anweisung sendet die Anwendung die erste Nachricht der Konversation an den Zieldienst. Die Anwendung muss darauf vorbereitet sein, Nachrichten von Service Broker zu empfangen und zu verarbeiten, selbst wenn das Zurückgeben von Nachrichten durch den Zieldienst laut Vertrag unzulässig ist. Die initiierende Anwendung wird oft in Form von zwei separaten Komponenten implementiert. Eine Komponente beginnt die Konversation, die andere Komponente verarbeitet Nachrichten, die in der Warteschlange eingehen.

Die Anwendung für einen Zieldienst empfängt Nachrichten vom initiierenden Dienst und verarbeitet diese. Sie muss außerdem auf den Empfang und die Verarbeitung von Nachrichten von Service Broker vorbereitet sein.

Je nach den Anforderungen des Diensts kann der Teil der Anwendung, der die Warteschlange verarbeitet, auf mehrere unterschiedliche Arten gestartet werden. Weitere Informationen zum Starten einer Anwendungen, die Service Broker verwendet, finden Sie unter Auswählen einer Startstrategie.

Unabhängig davon, wie die Anwendung gestartet wird, beginnt die Anwendung eine Transaktion und entfernt mithilfe der RECEIVE-Anweisung eine Nachricht aus der Warteschlange. Sie extrahiert die Daten aus den Nachrichten und führt die gesamte erforderliche Verarbeitung aus. Bei Bedarf sendet die Anwendung mithilfe der SEND-Anweisung Nachrichten an die andere Seite der Konversation. Anschließend führt sie einen Commit für die Transaktion aus. Aus Effizienzgründen verarbeitet die Anwendung möglicherweise mehrere Nachrichten in derselben Transaktion. Dienste, die den Status verwalten, verwenden häufig eine GET CONVERSATION GROUP-Anweisung, um eine Konversationsgruppe zu sperren, den Status für die Konversationsgruppe abzurufen und dann mehrere Nachrichten für die Konversationsgruppe zu verarbeiten.

Mithilfe von SEND-Anweisungen und RECEIVE-Anweisungen werden Nachrichten zwischen den Endpunkten übermittelt, sodass die Konversation fortgesetzt wird. Jeder Konversationsteilnehmer kann bei Bedarf jederzeit mit BEGIN DIALOG eine Konversation mit einem anderen Dienst beginnen, um weitere Informationen zu erhalten. Beispielsweise kann eine Anwendung, die eine Ereignisbenachrichtigung verarbeitet, eine andere Konversation mit einem Dienst initiieren, durch den persönliche Informationen bereitgestellt werden, um vor dem Versand einer Benachrichtigung aktuelle Kontaktinformationen abzurufen.

Wenn die Konversation ihren Zweck erfüllt hat, wird sie von der Anwendung am entsprechenden Endpunkt mit der END CONVERSATION-Anweisung beendet. Der andere Teilnehmer empfängt die END CONVERSATION-Nachricht und gibt seinerseits ebenfalls eine END CONVERSATION-Nachricht aus. Sobald beide Teilnehmer END CONVERSATION-Nachrichten ausgegeben haben, wird die Konversation beendet.

Beim Auftreten eines Fehlers gibt ein Teilnehmer der Konversation möglicherweise das Fehlschlagen an, indem er die Konversation mit der WITH ERROR-Klausel beendet. Durch die WITH ERROR-Klausel wird die Konversation beendet, und es wird eine Service Broker-Fehlermeldung an den anderen Teilnehmer der Konversation gesendet.

Wenn Service Broker einen Fehler ermittelt oder die Lebensdauer der Konversation abläuft, beendet Service Broker die Konversation und gibt eine Fehlermeldung an die aktiven Teilnehmer zurück. Falls Service Broker keine Konversation herstellen kann, ist die initiierende Anwendung der einzige aktive Teilnehmer, und der Fehler wird an den initiierenden Dienst übermittelt. Hat bereits ein Teilnehmer die Konversation beendet, wird die Fehlermeldung dem anderen Teilnehmer übermittelt. Andernfalls wird der Fehler an beide Teilnehmer der Konversation übermittelt.

In diesem Abschnitt