måndag, november 21, 2005

Vad är SOA utan distribuerade händelser?

I COM+ finns något som kallas för Loosely Coupled Events eller distribuerade händelser. Ett COM-objekt kan registrera sig för att prenumerera på händelser från ett annat COM-objekt utan att det andra är medveten om det första. Ur ett integrationsperspektiv så är distribuerade händelser en viktig ingridiens som förenklar mycket för både integratören och applikationsutvecklaren. Tekniken för det är implementerat inne i COM+ och är inte en del av varken prenumeranten eller servern. På liknande sätt har man specificerat det för Web Services genom WS-Eventing.

WS-Eventing beskriver hur man kan skapa prenumerationer på händelser över Web Services. Klienten skickar över en förfrågan av en prenumeration till en tjänst. Den förfrågan innehåller vilken händelse som är av intresse samt vart händelsen ska skickas när den inträffar. Allt som implementerar distribueringen av händelsen är inbyggt i WS-plattformen.

När behöver man distribuerade händelser? Händelser inträffar ju lite när som helst mellan och inom applikationer. En distribuerad händelse är bara aktuell då tjänsten eller applikationen som skapar den inte vet vem eller vilka som är intresserad av den. I första hand då något tillstånd har förändrats som man vill notifiera omvärlden om. En distribuerad händelse är dock inte intressant då en tjänst tagit emot en förfrågan från en klient som vill har ett svar, nu direkt eller senare. I det fallet känner tjänsten till klienten och svaret skickas enbart till den. Däremot kan tjänsten, som en sideffekt av det, skapa en distribuerad händelse för att notifiera övriga klienter om en tillståndförändring.

Distribuerade händelser är en naturlig del av en SOA. Den del av SOA vi känner väl är där orkestreringen av tjänster beskriver flödet och kommunikationen inom tjänstenätverket. Men det finns även en del som måste vara händelsestyrd och inte helt förutsatt. En SOA behöver WS-Eventing och innan plattformarna stödjer det så kan SOA anses vara en stel och statisk arkitektur.

Inga kommentarer: