background image

Web Service

Marcin Piątek 164797

11. Web Service i ESB

background image

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

background image

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

background image

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

background image

Dlaczego tego używać ?

• Oszczędność
• Skalowalność
• Zaawansowane i sprawdzone rozwiązania
• Możliwość zarobku ( z perspektywy 

dostarczającego usługi ) 

5 / 29

background image

Przykłady zastosowań

• Serwis pogodowy
• Internetowy katalog produktów
• RSS
• Mapy
• Płatności online
• … wiele innych

6 / 29

background image

Web Service – stos protokołów

7 / 29

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

WSDL: zawartość   schemat

20 / 29

background image

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

background image

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

background image

UDDI – scenariusz użycia

23 / 29

background image

UDDI – struktura dokumentu 

24 / 29

background image

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

background image

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

background image

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

background image

Bibliografia

• M. Papazoglou, „Web Services: principles 

and technology”, 2008

• E. Cerami, „Web Service Essentials”, 2002
• Oficjalna strona World Wide Web 

Consortium

www.w3.org

• Specyfikacja XML-RPC , 

http://www.xmlrpc.com/spec

• Dokumentacja techniczna płatności.pl
• Wikipedia

background image

Pytania

? ?