WS-Coordination


Die Webservice-Spezifikation WS-Coordination (kurz WS-C) beschreibt ein Framework, das Protokolle enthält die Aktionen der verteilten Systeme koordinieren sollen.

Die grundsätzlichen Mechaniken hinter WS-C sehen dabei folgendermaßen aus. Wenn ein Teilnehmer (Initiator) mit einem anderen Teilnehmer interagieren möchte, startet er eine Aktivität via dem Activation Service seines Koordinators. Dafür sendet er diesem eine CreateCoordinationContext Nachricht. Diese kann ein Ablaufdatum, den Koordinationstyp (einziges Pflichtfeld – bei WS-BusinessActivity bsp. http://schemas.xmlsoap.org/ws/2004/01/wsba) und weitere zusätzliche Felder beinhalten. Falls ein Teilnehmer schon bei einem Koordinator registriert ist, besitzt er auch schon einen CoordinationContext. Möchte er sich nun auch noch bei einem weiteren Koordinator registrieren, dann sendet er genau diesen CoordinationContext mit. Der weitere Koordinator importiert also die schon vorhandene activity. Die beiden Koordinatoren können nun die transaktions-spezifischen Dinge untereinander aushandeln.

Anschließend bekommt der Teilnehmer vom Koordinator einen Coordination Context mit der CreateCoordinationContextResponse-Nachricht zurück. Dieser beinhaltet neben dem Identifier (eindeutige Kennzeichnung der activity) auch einen Timeout Wert sowie CoordinationType und RegistrationService (Adresse dient zur Registrierung für die activity). Anschließend kann er sich nun bei dem Koordinator registrieren. Auch hier muss dem Koordinator wieder eine Nachricht geschickt werden. Darin teilt der Teilnehmer unter anderem mit für welches vom CoordinationType unterstütztes Protokoll (ProtocolIdentifier) er sich registrieren möchte. Damit der Koordinator weiß, wohin er die protokollspezifische Nachricht senden soll, übergibt ihm der Teilnehmer auch die Adresse seines Protokoll-Dienstes (das muss nicht zwangsläufig der Teilnehmer selbst sein). Der Koordinator wiederum antwortet mit einer RegistrationResponse Nachricht, in der er die Adresse seines Protokolldienstes (CoordinationProtocolService) mitteilt.

Zu guter Letzt sendet der Teilnehmer (immer noch der Initiator der activity) nun eine Anfrage mitsamt seines CoordinationContext dem anderen Teilnehmer. Dieser kann sich nun dadurch (jetzt weiß er für welche activity er sich registrieren soll) bei einem Koordinator seinerseits registrieren.

Wie die Koordination der Teilnehmer nun letztendlich abläuft regeln die Coordination Types, wie WS-AtomicTransaction und WS-BusinessActivity. Dabei enthält jeder CoordinationType verschiedene coordination protocols, wie beispielsweise das 2-Phase-Commit-Protocol.

Quelle:
Quellen:

Artikel vom 01.04.2014

Kommentare zum Artikel

comments powered by Disqus