Verträge
Ein Vertrag definiert, welche Nachrichtentypen eine Anwendung verwendet, um eine bestimmte Aufgabe auszuführen. Ein Vertrag ist eine Vereinbarung zwischen zwei Diensten über den Typ von Nachrichten, die jeder Dienst sendet, um eine bestimmte Aufgabe auszuführen. Vertragsdefinitionen werden in der Datenbank gespeichert, in der der Typ erstellt wird.
Sie erstellen in jeder Datenbank, die an der Konversation teilnimmt, einen identischen Vertrag. Wenn beispielsweise eine Personalanwendung eine Mitarbeiter-ID überprüfen möchte, muss der Dienst, der die Überprüfung anfordert, wissen, welche Nachrichtentypen von der anderen Anwendung erwartet werden. Der anfordernde Dienst muss auch wissen, welche Nachrichtentypen wahrscheinlich empfangen werden, sodass er darauf vorbereitet ist, sie zu verarbeiten.
Der Vertrag gibt an, welche Nachrichtentypen verwendet werden können, um die gewünschte Aufgabe auszuführen. Der Vertrag gibt weiterhin an, welcher Teilnehmer der Konversation den jeweiligen Nachrichtentyp verwenden kann. Einige Nachrichtentypen können entweder von jedem Teilnehmer gesendet werden, andere wiederum können nur vom Initiator oder nur vom Ziel gesendet werden. Ein Vertrag muss einen Nachrichtentyp enthalten, der vom Initiator oder von einem Teilnehmer gesendet wurde, sonst hat der Initiator keine Möglichkeit, eine Konversation zu beginnen, die den Vertrag verwendet.
Service Broker enthält auch einen integrierten Vertrag namens DEFAULT. Der DEFAULT-Vertrag enthält ausschließlich den Nachrichtentyp SENT BY ANY. Wenn in der BEGIN DIALOG-Anweisung kein Vertrag angegeben ist, verwendet Service Broker den DEFAULT-Vertrag.
Ein Vertrag kann z. B. die Nachrichtentypen SubmitRequest, ProcessRequest und RequestStatus enthalten. Nur der initiierende Endpunkt kann SubmitRequest verwenden, und nur der Zielendpunkt kann ProcessRequest senden. Jeder Konversationsteilnehmer kann den Nachrichtentyp RequestStatus senden. Mit dem Nachrichtentyp RequestStatus kann der Teilnehmer entweder sehen, wo sich das Ziel bei der Verarbeitung befindet, oder beim Initiator den Status der parallelen Verarbeitung überprüfen, die sich auf diese Anforderung bezieht.
Siehe auch