Dienstarchitektur

In diesem Abschnitt werden die Datenbankobjekte beschrieben, die das Grundkonzept einer Anwendung mit Service Broker bestimmen.

Zur Entwurfszeit geben Service Broker-Anwendungen die folgenden Objekte an:

  • Nachrichtentypen — Definieren die Namen von Nachrichten, die zwischen Anwendungen ausgetauscht werden. Optional bieten sie eine Überprüfung der Nachrichten.

  • Verträge— Geben die Richtung und den Typ von Nachrichten in einer bestimmten Konversation an.

  • Warteschlangen— Speichern Nachrichten. Dieser Speichermechanismus ermöglicht die asynchrone Kommunikation zwischen den Diensten. Service Broker-Warteschlangen bieten zusätzliche Vorteile, z. B. das automatische Sperren von Nachrichten in derselben Konversationsgruppe.

  • Dienste— Sind adressierbare Endpunkte für Konversationen. Service Broker-Nachrichten werden von einem Dienst an einen anderen Dienst gesendet. Ein Dienst gibt eine Warteschlange zum Aufbewahren von Nachrichten sowie Verträge an, für die der Dienst das Ziel sein kann. Ein Vertrag stellt einem Dienst einen richtig definierten Satz von Nachrichtentypen bereit.

Eine Service Broker-Anwendung verwendet die SQL Server-Objekte in der vorstehenden Liste, um eine Konversation auszuführen. Jedes Programm, das Transact-SQL-Anweisungen in SQL Server ausführen kann, kann Service Broker verwenden. Anwendungen können gespeicherte Prozeduren sein, die in Transact-SQL oder einer CLR-kompatiblen Sprache geschrieben sind, oder es können externe Programme sein, die sich mit einer Instanz von SQL Server verbinden.

Im folgenden Diagramm wird ein Service Broker-Dienst dargestellt:

Beziehung der Service Broker-Objekte

Wie in der Illustration gezeigt, gibt der ProcessExpenses-Vertrag drei Nachrichtentypen an: SubmitExpense, AcceptDenyExpense und ReimbursementIssued. Der Vertrag listet die Nachrichtentypen auf, die für eine Konversation notwendig sind, bei der ein Kostenerstattungstask ausgeführt wird. Der Vertrag ProcessExpenses bestimmt alle Konversationen zwischen dem Dienst ProcessExpense und beliebigen Diensten, die eine Konversation mit dem Dienst ProcessExpense initiieren. Der Dienst ProcessExpense speichert eingehende und ausgehende Nachrichten in der Warteschlange ExpenseQueue. Die gespeicherte Prozedur ExpenseProcessing empfängt Nachrichten aus dieser Warteschlange, verarbeitet sie und sendet sie zurück zur Warteschlange, von wo aus sie an den richtigen Broker weitergeleitet werden, wenn eine Antwort erforderlich ist.

In diesem Abschnitt

  • Nachrichtentypen
    Teilnehmer an einer Konversation müssen sich auf den Namen und den Inhalt jeder Nachricht einigen. Nachrichtentypen definieren Namen und Inhalt.

  • Verträge
    Verträge definieren, welche Nachrichtentypen eine Anwendung verwendet, um eine bestimmte Aufgabe auszuführen.

  • Warteschlangen
    Warteschlangen speichern Service Broker-Nachrichten.

  • Dienste
    Service Broker-Dienste sind Namen für bestimmte Geschäftsaufgaben oder Gruppen von Geschäftsaufgaben.