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 REST: silne typowanie możliwość automatycznego generowania kodu 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]