Usługi sieciowe REST
Jerzy Brzeziński
Cezary Sobaniec
Instytut Informatyki
Politechnika Poznańska
Wprowadzenie
Service Oriented Architecture nie zakłada stosowania
technologii Web Services...
... więc porozmawiajmy o alternatywie
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[1/20]
Krytyka (Big) WebServices
Dominująca technlogia realizacji usług sieciowych
Szerokie wsparcie ze strony dostawców oprogramowania
Ale:
złożoność
mnogość standardów WS-*
powielanie istniejących standardów
ignorowanie dostępnych technologii/standardów sieci Web
problemy ze współoperacyjnością (działania WS-I)
problemy z wydajnością
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[2/20]
REpresentational State Transfer — REST
Roy Fielding
, Architectural Styles and the Design of
Network-based Software Architectures, PhD Thesis, 2000.
jeden z kluczowych autorów protokołu HTTP (RFC 2616)
rozwijał HTML
tworzył koncepcję URI
współzałożyciel projektu Apache HTTP Server
członek OpenSolaris Boards
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[3/20]
REST
Representational State Trasfer — styl architektoniczny,
metaarchitektura, metodologia
Założenia:
architektura klient-serwer
bezstanowość (cache)
buforowanie podręczne
jednolity interfejs dostępu
Jednolity interfejs
jednolita identyfikacja/adresacja zasobów
manipulacja zasobami poprzez ich reprezentacje
samoopisujące się wiadomości (bezstanowość)
powiązania między zasobami (wyrażone w reprezentacjach)
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[4/20]
Cele REST
Skalowalność interakcji komponentów
Ogólność interfejsów
Niezależność wdrażania komponentów
loose coupling
możliwość aktualizacji/rozszerzania protokołu
Możliwość wprowadzania usług pośredniczących
redukcja opóźnień
zwiększanie bezpieczeństwa
opakowywanie zastanych systemów (gateways)
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[5/20]
REST w kontekście HTTP
RESTful web services → usługi sieciowe REST
Resource Oriented Architecture
Założenia ROA
Wykorzystanie URI do identyfikacji zasobów
Wykorzystanie metod protokołu HTTP do manipulacji
zasobami (model CRUD):
POST — tworzenie
GET — odczyt
PUT — aktualizacja
DELETE — usuwanie
Reprezentacja zasobów: typy MIME
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[6/20]
Zalety usług sieciowych REST
Prostota
Mniejszy narzut obliczeniowy
brak dodatkowego opakowania zleceń (koperta SOAP)
brak konieczności przetwarzania dokumentów XML
Wykorzystanie znanej i przetestowanej infrastruktury: Web
Możliwość stosowania serwerów pośredniczących
Semantyka operacji
charakter zlecanego przetwarzania (odczyt, modyfikacja)
optymalizacja buforowania podręcznego i replikacji
Mniej problemów ze współoperacyjnością (jednolity interfejs)
Minimum narzędzi potrzebnych do implementacji
Szeroka akceptacja wśród programistów
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[7/20]
Usługi sieciowe a architektura Web (1)
SOAP traktuje Web jako mechanizm transportowy do
przesyłania wiadomości interpretowanych przez aplikacje
spoza Web
tunelowanie wiadomości przez Web
nie po to był tworzony Web
nie za bardzo nadaje się do tego celu
SOAP korzysta tylko z (rozmytej semantycznie) metody
POST protokołu HTTP pomijając najsilniejsze strony Web
Web jest już integrującą szyną komunikacyjną (cf. ESB)
wyposażoną w:
predefiniowaną semantykę operacji
predefiniowany model adresowania
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[8/20]
Usługi sieciowe a architektura Web (2)
Fundamentem dla Web są identyfikatory URI
(Uniform Resource Identifier)
Web Services pozostawiają zarządzanie nazwami aplikacjom
SOAP stosuje URI tylko do wskazywania punktu dostępu do
usługi, która zarządza wszystkimi wewnętrznymi zasobami,
np.:
bank = new SOAPProxy("http://bank.pl/ws");
bank.addMoneyToAccount("23-1234-5678", 540.5);
→ brak bezpośredniego dostępu do konta (tylko bank)
→ nowa przestrzeń nazw dla numeracji kont
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[9/20]
SOAP a inne technologie Web/XML
Wiele protokołów/technologii zakłada wykorzystanie URI do
adresacji zasobów:
Resource Description Framework
XLinks — odwołania w dokumentach XML
RSS Really Simple Syndication
XPointer — uogólnienie XPath
XInclude — załączanie zewnętrznych dokumentów
SOAP wymusza tworzenie nowych standardów zastępujących
wymienione.
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[10/20]
Modele usług sieciowych
Zdalne wywołania procedur
Java RMI, CORBA, Web Services
Architektura zorientowana na zasoby
usługi sieciowe REST
Podejścia hybrydowe
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[11/20]
Klasyfikacja usług sieciowych (1)
Podstawowe pojęcia używane przy opisie usługi:
operacje
wykonywane/oferowane przez usługę
zasoby
udostępniane przez usługę
Wybór determinuje sposób modelowania i projektowania usługi
Usługa może udostępniać oba interfejsy
Nie ma możliwości automatyzacji translacji odwołań do usług
pomiędzy modelami — specyfika usługi
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[12/20]
Klasyfikacja usług sieciowych (2)
Zakładając wykorzystanie protokołu HTTP do komunikacji
Gdzie jest nazwa metody?
Gdzie jest wskazanie na zakres przetwarzanych danych?
(ang. scoping )
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[13/20]
Klasyfikacja usług sieciowych (3)
RPC — metoda i argument zapisane w wiadomości
SOAP
POST /ws HTTP/1.1
Host: books.example.com
Content-Type: application/soap+xml
Content-Length: 165
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope>
<soap:Body>
<m:
lookupBook
>
<m:id>
12345
</m:id>
</m:lookupBook>
</soap:Body>
</soap:Envelope>
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[14/20]
Klasyfikacja usług sieciowych (4)
Model zasobowy — metoda protokołu HTTP, argument w URI
Usługa sieciowa REST
GET
/books/12345
HTTP/1.1
Host: books.example.com
Istotne różnice:
wykorzystanie metody GET zamiast POST
jawna reprezentacja zasobu
/books/12345
brak dodatkowej koperty
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[15/20]
Klasyfikacja usług sieciowych (5)
Usługa hybrydowa — metody i argument w URI:
Usługa hybydowa
GET /service?method=
lookupBook
&id=
12345
HTTP/1.1
Host: books.example.com
Uwagi:
ograniczenie się do protokołu HTTP
metody modyfikujące wywoływane metodą GET
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[16/20]
Opis usługi
Przetwarzalny maszynowo opis interfejsu usług
WS-*: WSDL + XML Schema
silne typowanie
możliwość automatycznego generowania kodu
REST:
WADL — Web Application Description Language
modelowanie zasobów i relacji pomiędzy nimi
URI + metoda + arg. we → wynik
WSDL 2.0
odkrywanie usługi (calling → navigation)
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[17/20]
Kompozycja usług
WS-*
Business Process Execution Language
JOpera, XL
REST
Web 2.0
mashups
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[18/20]
Repozytoria usług
WS-*: UDDI
standard okrzepły, ale
mała liczba publicznych, otwartych repozytoriów usług
REST: po prostu Web
wyszukiwarki internetowe
microformats
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[19/20]
Podsumowanie
Obszary zastosowań usług sieciowych (architektury SOA):
Zastosowania przemysłowe (enterprise)
preferencja WebServices
szerokie wsparcie ze strony producentów oprogramowania
dostępność standardów uzupełniających
Zastosowania webowe
preferencja usług REST (Google Data API, Amazon WS)
usługi sieciowe REST są de facto rozszerzeniem Web
priorytet: integracja z istniejącą siecią Web
J. Brzeziński, C. Sobaniec
Usługi sieciowe REST
[20/20]