Web services

Transkrypt

Web services
Architektura zorientowana na usługi
ang. Service Oriented Architecture
Architektura oparta na
usługach
• SOA (ang. Service Oriented Architecture) to architektura dla aplikacji
biznesowych tworzonych jako zestaw samodzielnych komponentów,
organizowanych tak, aby dostarczyć usługi, działające według
określonych kryteriów, wspierające realizację procesów biznesowych
• Usługa w ujęciu SOA jest pojedynczym komponentem dostarczanym
przez IT do biznesu, wspierającym realizację określonego zadania
występującego w jednym lub więcej procesów biznesowych
• System w architekturze SOA to kolekcja usług, świadczonych przez
niezależne komponenty, które realizują jakąś funkcję biznesową
• SOA to koncepcja a nie technologia
2
Architektura zorientowana
na usługi
Architektura oparta na
usługach
• Sposób działania każdej usługi jest w całości zdefiniowany
przez interfejs ukrywający szczegóły implementacyjne niewidoczne i nieistotne z punktu widzenia klientów
• Interfejsy usług są zazwyczaj definiowane w sposób
abstrakcyjny i niezależny od platformy programistycznej
• Istnieje wspólne medium komunikacyjne, umożliwiające
swobodny przepływ danych pomiędzy komponentami
• Usługi są często implementowane na bazie różnych
technologii i udostępniane za pomocą niezależnego
protokołu komunikacyjnego
Cechy SOA (1)
http://simplicable.com/new/the-9-principles-of-soa-design
• Standaryzowane kontrakty
• Luźne powiązania
(minimalna zależność
usług od siebie)
• Warstwa abstrakcji
(usługa ukrywa swoja
wewnętrzną logikę przed klientem)
5
Cechy SOA (2)
• Ponowne użycie
(podział logiki na usługi
sprzyja ponownemu użyciu)
• Autonomia
(usługa ma całkowitą kontrolę
nad swoją logiką)
• Bezstanowość
6
Cechy SOA (3)
• Możliwość wyszukiwania usług
• Możliwość komponowania usług
• Interoperacyjność usług
7
Web services
• Web services (czyli usługi sieciowe) – realizacja wizji
jaką proponuje model SOA
• Usługi sieciowe to komponenty programowe (obiekty)
reprezentujące funkcje biznesowe dostępne dla innych
aplikacji (klienta, serwera, czy innej usługi) za
pośrednictwem sieci publicznej i przy użyciu ogólnie
dostępnych, powszechnych protokołów (np. HTTP)
Web services
• Usługi sieciowe wykorzystują standard XML do definiowania
danych i operacji
• Standardy:
–
–
–
–
SOAP – protokół komunikacyjny
WSDL – język opisu usług
UDDI – język do opisu infrastruktury do wykrywania usług
WS-BPEL – język opisujący integrację usług
Web services
• SOAP (Simple Object Acces Protocol) definiuje protokół komunikacyjny
XML dla podstawowych operacji wymiany komunikatów pomiędzy
komponentami za pośrednictwem tzw. kopert zawierających instrukcje
dla poszczególnych żądań
• WSDL (Web Services Description Language) to opracowany przez firmę
Microsoft specjalny język opisu usług
• UDDI (Universal Description, Discovery, and Integration) jest
standardem opisującym infrastrukturę do publikowania i przeszukiwania
usług w uporządkowany sposób
• WS-BPEL - deklaratywny język znaczników XML służący do opisu
wykonywania procesów biznesowych korzystających z usług sieciowych
Web services
• Z usługami sieciowymi związanych jest szereg organizacji
standaryzacyjnych, takich jak W3C, OASIS (Organization
for the Advanced of Structured Information Standards)
• Wszystkie znaczące firmy (Microsoft, Sun, IBM, Oracle,
Hewlett-Packard, BEA Systems) uczestniczą w rozwoju
nowej technologii i każda z nich chce dostarczać w miarę
kompletną platformę dla usług sieciowych
Web services
• Implementacja systemu w technologii usług sieciowych jest
możliwa w dowolnym z języków programowania
• W celu ułatwienia implementacji obsługi protokołu SOAP,
programiści Java mogą korzystać z biblioteki Java API for
XML-based RPC (JAX-RPC), która wyręcza ich z
konieczności konstrukcji, przesyłania i parsowania XMLowych komunikatów SOAP
•
Analogiczne biblioteki są dostępne dla innych popularnych
języków programowania (np. SOAP::Lite dla Perla, gSOAP
dla C/C++, ZSI dla Pythona, WCF dla .NET).
Web services
• Usługi sieciowe umożliwiają budowę prostych,
rozproszonych aplikacji, niezależnych od platformy
• Dostęp do usług sieciowych jest również niezwykle prosty,
dzięki zastosowaniu standartowych protokołów, takich jak
HTTP czy SOAP
• Usługi sieciowe mogą być wykorzystywane do integracji
aplikacji tworzonych w rozmaitych językach programowania,
na różnych platformach deweloperskich
Web Services
• Jedną z ich najważniejszych zalet jest fakt, że aplikacja
kliencka, która chce skorzystać z udostępnianej usługi, nie
musi być stworzona w tym samym języku co usługa
sieciowa, co więcej – nie musi nawet posiadać wiedzy na
temat budowy usługi
• Jedyne co jest potrzebne do wykorzystywania tej technologii
to internetowy adres usługi oraz nazwy metod przez nią
udostępnianych
Tworzenie serwisu
Przykładowy serwis
Programowe wywołanie
usługi
Wynik
Zalecenia projektowe
• Wymienianie danych w usługach sieciowych jest dość kosztowne,
ponieważ wykorzystuje komunikację sieciową
• Lepiej więc korzystać z usługi rzadziej, za to za jednym razem żądając
większej ilości danych wynikowych
• Dane mogą być przesyłane przez sieć w sposób niezaszyfrowany,
wykorzystując format XML, co ułatwia ich odczytanie przez
nieuprawnione osoby
• Projektując tego typu usługę musimy wziąć pod uwagę fakt, że może
być ona jednocześnie używana przez setki, a nawet tysiące osób
• Trzeba więc myśleć o skalowalności aplikacji, aby była ona w stanie
obsłużyć określoną ilość użytkowników
SOAP (Simple Object
Access Protocol)
• Prosty protokół komunikacyjny oparty na języku XML,
umożliwiający przekazywanie wywołań zdalnych
komponentów usług sieciowych
• SOAP może współdziałać z dowolnym niskopoziomowym
sieciowym mechanizmem transportowym, np. HTTP,
HTTPS, SMTP, JMS, RMI
SOAP (Simple Object
Access Protocol)
• Protokół SOAP umożliwia wywoływanie komponentów Web
Service w dwóch trybach: (1) Remote Procedure Call (RPC)
i (2) dokumentowym (document-oriented)
• W trybie RPC wywołanie ma charakter tradycyjny –
komponentowi przekazywana jest lista parametrów
formalnych wraz z ich bieżącymi wartościami
• W trybie dokumentowym usługa otrzymuje tylko jeden
parametr wywołania, którym jest dokument XML
SOAP (Simple Object
Access Protocol)
• Podstawowymi znacznikami wykorzystywanymi do budowy
komunikatów SOAP są:
–
–
–
–
<Envelope> – otacza cały komunikat
<Header> – zawiera informacje nagłówkowe
<Body> – zawiera informacje o żądaniu i odpowiedzi
<Fault> – opisuje błędy, jakie wystąpiły podczas przetwarzania
wywołania
Komunikat SOAP zawierający
wywołanie usługi sieciowej
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="demo">
<m:multiply>
<m:val1>3</m:val1>
<m:val2>2</m:val2>
</m:multiply>
</soap:Body>
</soap:Envelope>
Komunikat SOAP zawierający
wynik wywołania usługi
sieciowej
WSDL
• WSDL (Web Service Description Language) jest językiem
znaczników XML przeznaczonym do opisu usług sieciowych
• Podstawowe elementy dokumentu WSDL
– types – definicje typów danych
– message – dane wymieniane pomiędzy dostawcą usługi a jej
konsumentem
– portType – kolekcja operacji udostępnianych przez usługę
– binding – wiązanie operacji z protokołami
29
Struktura znaczników
dokumentu WSDL
Wzorce wymiany
komunikatów w WSDL
• Request-Responce – żądanie (klient) – odpowiedź (serwis)
• One-Way – komunikat w jedną stronę
• Notification - powiadomienie
• Solicit-Responce – prośba (serwis) – odpowiedź (klient)
31
Wzorce komunikatów w
WSDL – przykład
• Serwis usług pogodowych dostarcza prognozy pogody dla
swoich klientów
• Klient serwisu musi zasubskrybować się do serwisu aby
móc otrzymywać prognozę pogody
• Serwis pogodowy po otrzymaniu żądania subskrypcji
weryfikuje klienta wysyłając do niego żądanie i oczekując
odpowiedzi
• Serwis przesyła co pewien ustalony czas dane pogodowe
do klienta
• W dowolnym momencie klient może zażądać zmiany
danych pogodowych, jakie do niego są przesyłane
32
Request-Responce
Request<input>
Responce<output>
Client
Service
<portType name="WetherSubscribingPT">
<operation name="subscribe">
<input message="tns:subscribe"/>
<output message="tns:subscribeResponse"/>
</operation>
</portType>
33
One-Way
Request<input>
Client
Service
<portType name="UpdatePT">
<operation name="weatherUpdate">
<input message="tns:weatherUpdate"/>
</operation>
</portType>
34
Notification
Responce<output>
Klient
Usługa
<portType name="WetherPT">
<operation name="weatherNotification">
<output message="tns:weatherNotification"/>
</operation>
</portType>
35
Solicit-Responce
Request<output>
Responce<input>
Client
Service
<portType name="SubscriptionPT">
<operation name="verifySubscription">
<output message="tns:verifySubscription"/>
<input message="tns:verifySubscriptionResponse"/>
</operation>
</portType>
36
Integracja usług
• Udostępnienie usług to jednak dopiero pierwszy krok do
realizacji bardziej złożonych scenariuszy współpracy systemów
informatycznych
• Do realizacji bardziej złożonych scenariuszy wymagane jest by
usługi współpracowały ze sobą w pewien uporządkowany
sposób, tj. zgodnie z opracowanym wcześniej modelem procesu
współpracy
• Procesowe podejście do architektury SOA wymaga języka
opisującego jak usługi sieciowe mogą być komponowane w
większe struktury, aby umożliwić realizację bardziej złożonych
procesów
37
Aranżacja usług
• Istnieje centralny komponent koordynujący wywołania usług
składowych
• Usługi składowe nie mają świadomości uczestniczenia w procesie
wyższego poziomu
Usługi
sieciowe
3. invoke
koordynator
1. receive
2. invoke
4. reply
38
Choreografia usług
• Brak centralnego koordynatora
• Usługi komunikują się ze sobą bezpośrednio
• Każda usługa posiada cząstkową wiedzę o procesie w którym
uczestniczy
• Komunikacja pomiędzy usługami jest typu peer-to-peer
Usługi
sieciowe
2. invoke
3. invoke
4. reply
1. invoke
39
Aranżacja vs. Choreografia
Aranżacja
Choreografia
Bardziej elastyczna
Mniej elastyczna
Kolejny proces nie wymaga
modyfikacji kodu źródłowego
Każdy kolejny proces wymaga
ingerencji w kod usługi
Wymaga dodatkowego
komponentu koordynującego
Nie jest potrzebny żaden
dodatkowy komponent
40
Web Service Business Process
Execution Language (WSBPEL)
•
Deklaratywny język znaczników XML służący do opisu wykonania procesów
biznesowych korzystających z usług sieciowych (Web services)
•
Powstał z połączenia rozwiązań Microsoftu (XLANG) oraz IBM (WSFL) w
2003 roku (BPEL4WS 1.0)
•
Obecnie jest utrzymywany i rozwijany przez organizację OASIS (WS-BPEL
2.0)
•
Nie posiada formalnej notacji graficznej, niemniej każdy dostawca taką
notację do swojego produktu wprowadza
•
BPEL jest używany do integracji procesów wewnątrz organizacji, pomiędzy
organizacjami (B2B), ale również w systemach gridowych
•
BPEL wspiera integrację usług w oparciu o model aranżacji
41
Typowy proces BPEL
• Proces otrzymuje żądanie od klienta
• Aby zrealizować żądanie, korzysta z partnerskich usług sieciowych
• Po wykonaniu wszystkich koniecznych kroków przekazuje wynik do
klienta
Proces
BPEL
Partnerskie
usługi sieciowe
Aplikacja
klienta
Silnik
BPEL
42
Przykład* – sformułowanie
problemu
• Opis otoczenia
– Sprzedawcy udostępniają usługę sieciową działającą w trybie
asynchronicznym, która po przesłaniu danych produktu zwraca jego
aktualna cenę
– Dostępna jest również usługa sieciowa składowania danych w
repozytorium, która może być użyta do zapisywania wyników
zapytania o cenę – usługa działa w trybie synchronicznym
• Cel procesu
–
–
–
–
Odebranie danych o produkcie do sprawdzenia
Sprawdzenie ceny u dwóch sprzedawców i wybrane lepszej oferty
Zachowanie najlepszej oferty w repozytorium
Przekazanie wyników do klienta
* Na podstawie http://www.oracle.com/technetwork/articles/matjaz-bpel1-090575.html
43
Specyfikacja procesu w
BPMN
Uruchomienie procesu
z argumentem Query
Asynchroniczne wywołanie
usługi z argumentem Query
Proces BPEL
2.1. invoke
3.1. invoke
2.2. callback
3.2. callback
Partner: SellerB
Partner: SellerA
Usługa przekazuje
wynik - AnswerB
Synchroniczne
wywołanie usługi
1. invoke
4.1 invoke
4.2. reply
Partner: Repository
4. callback
Partner: Client
44
Proces przekazuje
wynik - Answer
Opis procesu i usług
• Specyfikacja procesu
– BestOffer.bpel – zawiera definicję procesu wykonywalnego w
języku WS-BPEL
• Specyfikacja usług
– Seller.wsdl – dokument WSDL usługi udostępnianej przez
sprzedawców (zakładamy, że wszyscy sprzedawcy udostępniają
identyczną usługę )
– Repository.wsdl – dokument WSDL usługi repozytorium
– BestOffer.bpel.wsdl – dokument WSDL usługi, którą tworzy
proces WS-BPEL (proces BPEL jest usługą sieciową!)
45
Specyfikacja procesu w WSBPEL
<process name="FindBestOffer" ... >
<partnerLinks> ... </partnerLinks>
<variables> ... </variables>
<sequence>
<receive ... />
<flow>
<sequence>
<invoke ... />
<receive ... />
</sequence>
<sequence>
<invoke ... />
<receive ... />
</sequence>
</flow>
<if>
<condition>...</condition>
<assign .../>
<else>
<assign .../>
</else>
</if>
<invoke ... />
<invoke ... />
</sequence>
</process>
46
Koniec
47

Podobne dokumenty