Web Service
Marcin Piątek 164797
11. Web Service i ESB
Plan prezentacji
• Co to jest Web Service ?
• Korzyści, możliwości, zastosowania
• Rozwiązania i technologie
– XML-RPC
– SOAP
– WSDL
– UDDI
• Przykład Web Service – płatności.pl
• Podsumowanie , bibliografia
2 / 29
Web Service - definicja własna
Web Service to zdalna usługa sieciowa,
która oferuje jej użytkownikom/klientom
pewne funkcjonalności i korzyści po
komunikacji z tą usługą za pomocą dobrze
opisanych interfejsów i z użyciem
odpowiednich protokołów komunikacji.
3 / 29
Web Service – definicja wg W3C
• Web Service to oprogramowanie stworzone w celu
wspierania sieciowej współpracy między
systemami/maszynami. Posiada interfejs opisany
formatem "maszynowym" (np. WSDL). Inne systemy
współpracują z Web Service w sposób opisany w
jego dokumentacji, z wykorzystaniem wiadomości
SOAP, najczęściej transportowanym przez protokół
HTTP z serializacją XML, w połączeniu z innymi
sieciowymi standardami.
Tłumaczenie własne definicji za w3.org
4 / 29
Dlaczego tego używać ?
• Oszczędność
• Skalowalność
• Zaawansowane i sprawdzone rozwiązania
• Możliwość zarobku ( z perspektywy
dostarczającego usługi )
5 / 29
Przykłady zastosowań
• Serwis pogodowy
• Internetowy katalog produktów
• RSS
• Mapy
• Płatności online
• … wiele innych
6 / 29
Web Service – stos protokołów
7 / 29
Wzorce wymiany informacji
• Jednokierunkowa
- klient dostawca
→
(np. założenie nowej płatności )
- dostawca klient
→
(np. informacja o zmianie stanu
płatności )
• Dwukierunkowa
- k d k
→ →
(np. żądanie anulowania
transakcji w odpowiedzi
→
status )
- d k d
→ →
(np. informacja o zmianie stanu
płatności z potwierdzeniem
odbioru)
8 / 29
XML-RPC
• Protokół XML pierwszej generacji
• Oparty na RPC (Remote Procedure Call)
• Bardzo prosty (specyfikacja: 4 strony) :
żądania HTTP POST z odpowiednią strukturą treści:
– Nagłówek HTTP ( i XML)
– Rama: <methodCall>
– Metoda: <methodName>
– Parametry: <params>
• Typy danych: 6 podstawowych + tablice i rekordy
9 / 29
XML-RPC - przykład
<?xml version="1.0" encoding="ISO-8859-1"?>
<methodCall>
<methodName>weather.getWeather</methodName>
<params>
<param><value>10016</value></param>
</params>
</methodCall>
<?xml version="1.0" encoding="ISO-8859-1"?>
<methodResponse>
<params>
<param>
<value><int>65</int></value>
</param>
</params>
</methodResponse>
Klient WS
Dostawca WS
10 / 29
SOAP
• Simple Object Access Protocol
• Protokół XML drugiej generacji
• Większa złożoność większe możliwości
↔
• Niezależny od protokołu przenoszenia danych
• Bardzo elastyczny – określone tylko ramy, nie
szczegóły – możliwość wyboru czy wręcz użycia
własnej formy przekazywanej zawartości
wiadomości
11 / 29
SOAP – struktura wiadomości
Wymagane:
– Envelope – opakowanie
całości
– Body – zawartość
wiadomości
Opcjonalne:
– Header – metadane itp.
– Fault – nie zawsze
obsługiwany
12 / 29
SOAP – przykład wiadomości
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="
http://www.w3.org/2001/XMLSchema
">
<SOAP-ENV:Header>
<ns1:PaymentAccount xmlns:ns1="urn:ecerami" >
orsenigo473
</ns1:PaymentAccount >
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:getTemp xmlns:ns1="urn:xmethods-Temperature"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<zipcode xsi:type="xsd:string">10016</zipcode>
</ns1:getTemp>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
13 / 29
SOAP – kodowanie wiadomości
• SOAP nie narzuca żadnego standardu, można
wybrać dowolne kodowanie treści
• ...ale oferuje też własny standard kodowania
(najczęściej używany)
• … który posiada:
– Własną składnię
– Typy proste ( 21 )
– Typy złożone : tablice i rekordy
14 / 29
SOAP – 2 przykłady kodowania
<SOAP-ENV:Body>
<ns1:getTemperatureRequest
xmlns:ns1="urn:weatherservice"
SOAP-ENV:encodingStyle=
"http://www.w3.org/2001/09/soap-
encoding">
<zipcode xsi:type="xsd:integer">
54990
</zipcode>
<date xsi:type=”xsd:date”>
2011-05-09
</date>
</ns1:getTemperatureRequest>
</SOAP-ENV:Body>
<SOAP-ENV:Body>
<ns1:getTemperature
xmlns:ns1="urn:XMLweatherservice"
SOAP-ENV:encodingStyle=
"http://xml.apache.org/xml-soap/literalxml">
<request>
<zip>54990</zip>
<date>20110509</date>
</request>
</ns1:getTemperatureRequest>
</SOAP-ENV:Body>
SOAP Encoding
Literal XML Encoding
15 / 29
SOAP – jak korzystać ?
• Ręczne tworzenie wiadomości – raczej nie
dla ludzi (tym bardziej nie dla [leniwych]
informatyków )
• Korzystamy z gotowych implementacji –
dostępne dla wszystkich popularnych
języków użycie dobrze opisanego WS (z
→
użyciem WSDL) praktycznie identyczne z
lokalnym użyciem metod/funkcji
16 / 29
WSDL - wstęp
• Web Service Description Language
• Opis słowny usług świadczonych przez WS
nie jest wystarczający
• Wygodne jest korzystanie z ujednoliconego
opisu rozumianego przez maszyny
• WSDL jest rodzajem kontraktu między
świadczącym usługę a korzystającymi z
niej
17 / 29
WSDL cd.
• Niezależny od platformy i języka opisywanych usług
• Definiowany w XML
• Określa:
– CO dany WS robi (np. jakie operacje udostępnia)
– GDZIE WS można znaleźć (np. adresy URL )
– JAK danego WS'a używać (np. format wiadomości )
18 / 29
WSDL - zawartość
W WSDL dany Web Service jest opisywany przez 6 głównych elementów:
• TYP (<wsdl:types> ), definicje typów danych używanych do komunikacji
przez dany WS
• WIADOMOŚĆ (<wsdl:message>), abstrakcyjna definicja danych
przesyłanych/odbieranych w operacjach (przykład: wiadomość
zapytanieTemperatura zawiera pola : integer ZIPCODE , date DATA )
• TYP PORTU (<wsdl:portType> ), zbiór abstrakcyjnych operacji, dla każdej
określone wiadomości wejściowe i wyjściowe oraz ewentualnie wiadomość z
błędem.
• WIĄZANIE (<wsdl:binding>) , specyfikuje konkretny protokół i format danych
dla operacji i wiadomości zdefiniowanych dla danego typu portu
• PORT (<wsdl:port>) , przypisanie konkretnego adresu URL
• SERWIS (<wsdl:service>) , zbiór wszystkich portów danego WS
19 / 29
WSDL: zawartość schemat
→
20 / 29
UDDI - wstęp
• Universal Description Discovery and
Integration
• Geneza: jak znaleźć usługę której
potrzebujemy ?
• UDDI umożliwia :
– opisywanie
– odkrywanie
– integrację
...usług sieciowych
21 / 29
UDDI cd.
• UDDI nie jest związany z żadną konkretną technologią
usług, opisuje nie tylko WS używające SOAP czy nawet
komputerów– teoretycznie może opisywać nawet usługi
świadczone przez Fax, choć …
• Opisywany zawsze za pomocą XML
22 / 29
UDDI – scenariusz użycia
23 / 29
UDDI – struktura dokumentu
24 / 29
Przykład użycia WS- płatności.pl
• Opis : dokumentacja techniczna oraz WSDL
• Możliwe sposoby komunikacji
– Czyste żądania HTTP – POST, GET – w
odpowiedzi XML lub czysty tekst
żądanie może wyglądać np. tak:
https://adres/NewPayment?arg1=val1&arg2=val2&...
– SOAP ( opisane przez WSDL )
25 / 29
Przykład cd.
• Z dokumentacji technicznej znamy adres WSDL
• Chcemy wywołać metodę getRefunds , która za parametr
przyjmuje obiekt z 4 atrybutami : posID, sessionId, ts, sig
• Do dzieła ! W php to będzie tak:
• W odpowiedzi otrzymujemy obiekt z atrybutami określonymi
w dokumentacji (oraz w dokumencie WSDL)
• To wszystko, właśnie użyliśmy SOAP !
$wsdl_url = 'https://www.platnosci.pl/paygw/webapi/Refunds?wsdl' ;
$client = new SoapClient($wsdl_url) ;
$argumenty = (object) array('posId'=>'1234' , 'sessionId'=>'1102', 'ts'=> '1915', 'sig'=>'ASD21D') ;
$odpowiedz = $client->getRefunds($argumenty);
26 / 29
Podsumowanie
• Użycie Web Service daje bardzo duże możliwości rozwoju i integracji oprogramowania
• Dostępne są różne metody użycia Web Service, od prostych (XML-RPC) po złożone
(SOAP)
• Istnieją języki/standardy pozwalające w pełni korzystać z dobrodziejstw usług
sieciowych, od ich odkrywania, przez poznawanie i opisywanie, aż do bezpośredniego
ich użycia z pomocą konkretnych protokołów komunikacji i transportu
• Poznanie języków formalnych (SOAP, UDDI, WSDL) wymaga czasu, ale nie jest
konieczne, jeżeli chcemy tylko używać pewnych usług, a nie tworzyć własne.
27 / 29
Bibliografia
• M. Papazoglou, „Web Services: principles
and technology”, 2008
• E. Cerami, „Web Service Essentials”, 2002
• Oficjalna strona World Wide Web
Consortium,
• Specyfikacja XML-RPC ,
• Dokumentacja techniczna płatności.pl
• Wikipedia
Pytania
? ?