Wie arbeitet Service Broker?

Service Broker unterstützt die Entwickler beim Erstellen von asynchronen, lose verbundenen Anwendungen, bei denen unabhängige Komponenten zusammenwirken, um eine Aufgabe durchzuführen. Diese Anwendungskomponenten tauschen Nachrichten aus, die die zum Durchführen der Aufgabe erforderlichen Informationen enthalten. In diesem Thema werden die folgenden grundlegenden Aspekte von Service Broker beschrieben:

  • Konversationen
  • Nachrichtensortierung und -koordination
  • Asynchrone Transaktionsprogrammierung
  • Unterstützung von lose verbundenen Anwendungen
  • Service Broker-Komponenten

Konversationen

Service Broker wurde für die grundlegenden Funktionen des Sendens und Empfangens von Nachrichten entwickelt. Jede Nachricht ist Teil einer Konversation – ein zuverlässiger, dauerhafter Kommunikationskanal. Jede Nachricht und Konversation weist einen bestimmten, von Service Broker erzwungenen Typ auf, mit dem die Entwickler zuverlässige Anwendungen schreiben können.

Neue Transact-SQL-Anweisungen ermöglichen den Anwendungen, die Nachrichten zuverlässig zu senden und zu empfangen. Eine Anwendung sendet die Nachrichten an einen Dienst; dabei handelt es sich um einen Namen für eine Reihe von verwandten Aufgaben. Eine Anwendung erhält Nachrichten von einer Warteschlange, wobei es sich um eine Sicht einer internen Tabelle handelt.

Nachrichten für dieselbe Aufgabe sind Teil derselben Konversation. Innerhalb einer Konversation garantiert Service Broker, dass eine Anwendung jede Nachricht genau einmal erhält, und zwar in der Reihenfolge, in der die Nachricht gesendet wurde. Das Programm, das einen Dienst implementiert, kann verwandte Konversationen für denselben Dienst in eine Konversationsgruppe zusammenfassen, wie unter Vorteile von Service Broker beschrieben.

Die zertifikatbasierte Sicherheit schützt vertrauliche Nachrichten und steuert den Zugriff auf Dienste.

Sie können sich Service Broker z. B. als Postdienst vorstellen. Um mit einem Kollegen an einem entfernten Standort zu kommunizieren, können Sie Briefe per Postdienst versenden, der die Briefe sortiert und zustellt. Sie und Ihr Kollege nehmen die Briefe aus Ihren Briefkästen, lesen sie, schreiben Antworten und senden neue Briefe, bis die "Konversation" beendet ist. Die Briefzustellung findet "asynchron" statt, d. h. während Sie und Ihr Kollege andere Aufgaben durchführen.

Zwei Benutzer tauschen Briefe über einen Postdienst aus

In der Analogie des Postdienstes sind die Briefe Nachrichten. Ein Service Broker-Dienst ist die Adresse, an die der Postdienst die Briefe zustellt. Warteschlangen sind die Briefkästen, in denen die Briefe aufbewahrt werden, nachdem sie zugestellt wurden. Die Anwendungen erhalten die Nachrichten, reagieren darauf und senden Antworten.

Ein Programm, das Service Broker verwendet, kommuniziert mit anderen Programmen auf eine Weise, die einem Postdienst ähnlich ist.

Sie müssen nicht genau wissen, wann der Kollege E-Mail liest oder Antworten schreibt. Gleichermaßen braucht eine Anwendung auf Basis von Service Broker nicht zu wissen, wann ein anderer Dienst eine Nachricht verarbeitet, wie sie zugestellt wird oder wann die andere Anwendung die Nachricht verarbeitet.

Nachrichtensortierung und -koordination

Service Broker verwendet Queuing, eine häufig angewendete Technik bei der Datenbankprogrammierung, in zwei wesentlichen Punkten auf andere Weise als herkömmliche Produkte:

  • Die Service Broker-Warteschlangen sind in die Datenbank integriert.
  • Die Warteschlangen koordinieren und sortieren verwandte Nachrichten.

Integriertes Queuing bedeutet, dass Service Broker in die übliche Datenbankwartung und -verwaltung einbezogen wird. In der Regel muss ein Administrator keine routinemäßigen Wartungsaufgaben für Service Broker durchführen.

Das Service Broker-Framework bietet eine einfache Transact-SQL-Schnittstelle zum Senden und Empfangen von Nachrichten, kombiniert mit einer Reihe von Garantien zur Nachrichtenzustellung und -verarbeitung. Service Broker garantiert, dass ein Programm jede Nachricht einer Konversation genau einmal in der Reihenfolge empfängt, in der die Nachricht gesendet wurde, nicht in der Reihenfolge, in der die Nachricht in die Warteschlange eintritt. Herkömmliche Queuingprodukte stellen die Nachrichten in der Reihenfolge zu, in der sie in die Warteschlange eingetreten sind, wofür eine Anwendung erforderlich ist, die die Reihenfolge und Gruppierung der Nachrichten ermittelt. Service Broker garantiert, dass zwei Warteschlangenleser nicht gleichzeitig Nachrichten derselben Konversation oder derselben Gruppe verwandter Konversationen verarbeiten können.

Das initiierende Programm startet eine Konversation für jede Aufgabe und sendet dann eine Nachricht an den Zieldienst. Die Nachricht enthält die zum Durchführen eines bestimmten Schritts in einer Aufgabe erforderlichen Daten. Der Zieldienst empfängt die Nachricht. Das Programm für den Zieldienst verarbeitet die Nachricht und antwortet dann dem initiierenden Dienst. Die Konversation wird fortgesetzt und endet schließlich entsprechend den vom Entwickler festgelegten Regeln.

Service Broker wickelt die schwierigsten Aufgaben im Zusammenhang mit dem Schreiben von Messaginganwendungen ab. Dazu gehören die Nachrichtenkoordination, zuverlässige Nachrichtenübermittlung und -sperre sowie das Starten von Warteschlangenlesern. Somit hat der Datenbankentwickler mehr Zeit, um sich auf die Lösung von Geschäftsproblemen zu konzentrieren.

Asynchrone Transaktionsprogrammierung

Bei der Service Broker-Infrastruktur ist die Nachrichtenzustellung zwischen Anwendungen transaktional und asynchron. Da das Service Broker-Messaging transaktional ist, wird bei einem Rollback einer Transaktion ein Rollback aller Service Broker-Vorgänge innerhalb der Transaktion ausgeführt. Das umfasst Sende- und Empfangsvorgänge. Bei der asynchronen Zustellung ist Datenbankmodul für die Zustellung zuständig, während die Anwendung weiterhin ausgeführt wird. Um die Skalierbarkeit zu verbessern, bietet Service Broker Mechanismen für das automatische Starten von Programmen, mit denen eine Warteschlange verarbeitet wird, sobald für das Programm sinnvolle Aufgaben vorliegen. Weitere Informationen finden Sie unter Service Broker Activation.

Die asynchrone Programmierung unterstützt Entwickler beim Schreiben von Anwendungen, die Queuing verwenden. Viele Datenbankanwendungen enthalten Tabellen, die als Warteschlangen für Aufgaben verwendet werden, die entsprechend den verfügbaren Ressourcen durchgeführt werden. Mithilfe von Queuing kann die Datenbank weiterhin auf interaktive Benutzer reagieren, während die verfügbaren Ressourcen gleichzeitig effizient genutzt werden. Service Broker bietet Queuing als wichtigen Bestandteil von Datenbankmodul.

Mithilfe von Queuing kann eine Anwendung Aufgaben in einer anderen Transaktion als derjenigen durchführen, die die Arbeit anfordert. Service Broker führt diese Idee fort und ermöglicht bestimmten Anwendungen, die Arbeit in einer anderen Instanz oder auf einem anderen Computer durchzuführen. Service Broker unterstützt die Datenbankentwickler durch das Bereitstellen eines integrierten Queuing innerhalb der Datenbank und eines zuverlässigen, transaktionalen Messaging zwischen Instanzen.

Unterstützung von lose verbundenen Anwendungen

Service Broker unterstützt lose verbundene Anwendungen. Lose verbundene Anwendungen setzen sich aus mehreren Programmen zusammen, die unabhängig voneinander Nachrichten senden und empfangen. Diese Anwendungen müssen dieselben Definitionen für die ausgetauschten Nachrichten enthalten und dieselbe Gesamtstruktur für die Interaktion zwischen den Diensten definieren. Die Anwendungen brauchen jedoch nicht zur gleichen Zeit zu laufen, in derselben Instanz von SQL Server ausgeführt zu werden oder gemeinsame Implementierungsdetails aufzuweisen. Eine Anwendung muss den physikalischen Speicherort oder die Implementierung des anderen Teilnehmers der Konversation nicht kennen.

Service Broker-Komponenten

Service Broker bietet drei Arten von Komponenten:

  • Konversationskomponenten. Konversationsgruppen, Konversationen und Nachrichten aus der Laufzeitstruktur einer Service Broker-Anwendung. Anwendungen tauschen Nachrichten als Teil einer Konversation aus. Jede Konversation ist Teil einer Konversationsgruppe; eine Konversationsgruppe kann mehrere Konversationen enthalten. Service Broker-Konversationen sind Dialoge, d. h. Konversationen zwischen genau zwei Teilnehmern. Weitere Informationen zu Konversationskomponenten finden Sie unter Konversationsarchitektur.
  • Dienstdefinitionskomponenten. Dabei handelt es sich um Entwurfszeitkomponenten, die die grundlegende Struktur der Konversationen angeben, die von der Anwendung verwendet werden. Sie definieren die Nachrichtentypen, den Konversationsfluss und den Datenbankspeicher für die Anwendung. Weitere Informationen zu den Dienstdefinitionskomponenten finden Sie unter Dienstarchitektur.
  • Netzwerk- und Sicherheitskomponenten. Diese Komponenten definieren die Infrastruktur für den Austausch von Nachrichten außerhalb einer Instanz von SQL Server. Um die Datenbankadministratoren bei der Verwaltung sich ändernder Umgebungen zu unterstützen, ermöglicht Service Broker den Administratoren die Konfiguration dieser Komponenten unabhängig vom Anwendungscode. Weitere Informationen zu Netzwerk- und Sicherheitskomponenten finden Sie unter Netzwerk- und Remotesicherheit.

Die Dienstdefinitions-, Netzwerk- und Sicherheitskomponenten sind Teil der Metadaten für die Datenbank und der SQL Server-Instanz. Konversationsgruppen, Konversationen und Nachrichten sind Teil der in der Datenbank enthaltenen Daten.

Siehe auch

Konzepte

Service Broker-Skalierbarkeit

Andere Ressourcen

Service Broker-Architektur
Service Broker Activation
Sicherheitsüberlegungen für Service Broker
Service Broker-Lernprogramme

Hilfe und Informationen

Informationsquellen für SQL Server 2005