SOA – Service Oriented Architecture
Termin “Service Oriented Architecture” jest określeniem architektury systemów rozproszonych, w których wyróżnia się:
- usługobiorcę – klienta korzystającego z usług
- dostawcę usług – usługą jest realizacja pewnego przetwarzania z wykorzystaniem dostarczonych danych
- rejestr usług – miejsce, gdzie klient uzyskuje informacje o potrzebnych mu usługach
Podstawą SOA jest wykorzystanie przesyłania komunikatów do wymiany informacji między uczestnikami przetwarzania. Architektury usługowe odróżnia się od architektur obiektowych i architektur komponentowych.
Dostarczając usługę w ramach architektury usługowej należy w ogólnie znanym i dostępnym rejestrze dokonać zgłoszenia:
- miejsca dostępności usługi
- sposobu korzystania z usługi
Klient chcący korzystać z określonej usługi:
- wyszukuje w ogólnie znanych i dostępnych rejestrach opisy świadczonych usług
- wybiera najbardziej mu odpowiadającą
- kontaktuje się z serwerem usługi w celu realizacji przetwarzania
Sposób korzystania z usługi jest równoważny interfejsowi oprogramowania realizującego usługę. Interfejs taki powinien być napisany w sposób niezależny od:
- języka programowania
- systemu operacyjnego
- sprzętu realizującego obliczenia
Sposób powiązania usługodawcy z usługobiorcą za pomocą tak określonych interfejsów określa się jako luźny (loosely coupled). Usługi zgłoszone w systemach SOA mogą być jednocześnie klientami innych usług. W ten sposób można tworzyć złożone schematy przetwarzania (workflows) składające się z wielu, odpowiednio zorganizowanych usług. Architektura usługowa (SOA) jest w tym ujęciu przeciwstawiona architekturze komponentowej (CBD).
- ten sam cel - ponowne wykorzystanie oprogramowania
- SOA - realizacja za pomocą organizacji usług sieciowych
- CBD - lokalne komponowanie dostarczonych fragmentów oprogramowania
WebServices
SOA i CBSE
SOA i CBSE są konkurencyjnymi technikami dostarczania gotowych „cegieł” do budowania programów. Komponenty są implementacjami interfejsów dla konkretnego środowiska (nie ma wspólnego języka definiowania interfejsów), elementy SOA realizują opublikowaną funkcjonalność (języki opisu z założenia mają być powszechnymi standardami). Pakowanie i montaż komponentów są czynnościami fazy tworzenia oprogramowania, kombinacja wykonawców usług odbywa się dynamicznie, w trakcie realizacji programu. Realizacja usług korzysta ze standardowych protokołów sieciowych, komponenty są zazwyczaj silniej zintegrowane.