Podejścia do realizacji Web Services

Podobne dokumenty
Programowanie Komponentowe WebAPI

Usługi sieciowe REST. Instytut Informatyki Politechnika Poznańska

Web Services. Wojciech Mazur. 17 marca Politechnika Wrocławska Wydział Informatyki i Zarządzania

Programowanie w Internecie

Wybrane działy Informatyki Stosowanej

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Ministerstwo Finansów

Podręcznik Integracji

Web Services. Bartłomiej Świercz. Łódź, 2 grudnia 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Web Services

Programowanie komponentowe

Komunikacja międzysystemowa

Usługi sieciowe (Web Services)

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Wybrane działy Informatyki Stosowanej

Wprowadzenie do usług internetowych

Komunikacja i wymiana danych

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Programowanie obiektowe

Część I -ebxml. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Systemy obiegu informacji i Protokół SWAP "CC"

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

SOA Web Services in Java

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Rozproszone systemy Internetowe

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Web Service y w Javie

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak

Architektura bezpiecznych aplikacji internetowych na platformie Java Enterprise Edition. Jakub Grabowski Warszawa,

Architektura aplikacji

Języki programowania wysokiego poziomu WWW

JAX-RS czyli REST w Javie. Adam Kędziora

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Ministerstwo Finansów

Automatyzacja procesów biznesowych Andrzej Sobecki. ESB Enterprise service bus

Ruby i Ruby on Rails. Mateusz Drożdżyński

Przypisywanie bibliotek w architekturze SAS

OpenLaszlo. OpenLaszlo

Nowe mechanizmy w wersji 3 Java Card. Mateusz LESZEK (138775)

1 Wprowadzenie do J2EE

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Application Layer Functionality and Protocols

Paweł Rajba

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Technologie internetowe

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Rozszerzenie funkcjonalności systemów wiki w oparciu o wtyczki i Prolog

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Programowanie. Dodatek - uzupełnienie wiadomości. mgr inż. Krzysztof Szwarc. Sosnowiec,

Web Services. Technologie Biznesu Elektronicznego. Konrad Kunicki. Politechnika Wrocławska, Wydział Informatyki i Zarządzania

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Wybrane działy Informatyki Stosowanej

Gatesms.eu Mobilne Rozwiązania dla biznesu

Projekt Fstorage. Łukasz Podkalicki Bartosz Kropiewnicki

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

ActiveXperts SMS Messaging Server

Architektury usług internetowych. Tomasz Boiński Mariusz Matuszek

Integracja komunikatora opartego o protokół XMPP z dużym portalem internetowym

Forum Client - Spring in Swing

Dodatkowo, w przypadku modułu dotyczącego integracji z systemami partnerów, Wykonawca będzie przeprowadzał testy integracyjne.

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

OSI Transport Layer. Network Fundamentals Chapter 4. Version Cisco Systems, Inc. All rights reserved. Cisco Public 1

Simple Object Access Protocol

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Stan zaawansowania prac dotyczących zamówienia na opracowanie i wdrożenie rdzenia systemu e Urząd.

Automatyzacja Testowania w WEB 2.0

INTERNET - Wrocław Usługi bezpieczeństwa w rozproszonych strukturach obliczeniowych typu grid

Tworzenie i wykorzystanie usług sieciowych

Dostęp do komponentów EJB przez usługi Web Services

Program szkolenia: REST i Microservices w PHP

Lotus Day Warszawa,17. września Lotus Mashups

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Katalog książek cz. 3: Web Service

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Poniższy diagram prezentuje scenariusz subskrypcji aplikacji do usługi CallEventNotifications.

Wywoływanie metod zdalnych

Korporacyjna Magistrala Usług na przykładzie Mule ESB

Programowanie współbieżne i rozproszone

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Dokumentacja Techniczna. Dokumentacja techniczna usługi płatności mobilnych

Spis treci. Dzie 1. I Wprowadzenie (wersja 0911) II Dostp do danych biecych specyfikacja OPC Data Access (wersja 0911)

Usługi WWW. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

Architektura mikroserwisów na platformie Spring IO

Tomasz Grześ. Systemy zarządzania treścią

Wywoływanie metod zdalnych

Technologie cyfrowe semestr letni 2018/2019

Wspomaganie pracy w terenie za pomocą technologii BlackBerry MDS. (c) 2008 Grupa SPOT SJ

Spring Web MVC, Spring DI

REFERAT PRACY DYPLOMOWEJ

Ogólnopolskie Repozytorium Prac Dyplomowych

Laboratorium - Poznawanie FTP

Sieci komputerowe i bazy danych

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Zaawansowany kurs języka Python

Transkrypt:

Podejścia do realizacji Web Services czyli: Giving SOAP a REST Piotr Domagalski szalik@szalik.net 16 kwietnia 2008

Plan 1 Czym są i do czego służą Web Services? 2 Trzy podejścia 3 REST REpresentational State Transfer 4 Prosty przykład 5 Bezpieczeństwo 6 Przykłady: Flickr (zły) oraz Google (dobry) Piotr Domagalski Podejścia do realizacji Web Services (2)

Czym są Web Services? Definicja World Wide Web Consortium (W3C): a software system designed to support interoperable Machine to Machine interaction over a network Najczęściej rozumiane jako wykorzystanie protokołu SOAP (Simple Object Access Protocol) oraz WSDL (Web Services Description Language) Istnieje też co najmniej jedno odmienne podejście do problemu... Piotr Domagalski Podejścia do realizacji Web Services (3)

Jakie problemy rozwiązujemy? Enterprise Application Integration (EAI) Integracja (starych) systemów w celu umożliwienia ich pełniejszego wykorzystania jako całości w ramach organizacji Cross-Organization Integration (B2B) Udostępnienie publicznych interfejsów partnerom lub klientom w celu zdalnego dostepu do systemów w organizacji Różne wymagania, różne implikacje. Piotr Domagalski Podejścia do realizacji Web Services (4)

Trzy podejścia 1 Własny protokół 2 Podejście szkieletowe/pionowe (Framework approach) 3 Podejście poziome (Horizontal protocol approach) Piotr Domagalski Podejścia do realizacji Web Services (5)

Własny protokół Istniejące rozwiązania są niewystarczające lub nie chcemy czekać aż osiągną dojrzałość Tworzymy własny protokół dla danego problemu, opierając się na jednym z podstawowych rozwiązań (np. TCP/IP) Łatwo wprowadzić błędy rozwiązując już raz rozwiązane kwestie Rozwiązanie drogie, wymaga sporych umiejętności praktycznie nieustające prace nad protokołem (np. nowe mechanizmy bezpieczeństwa) Rzadko spotykane obecnie Piotr Domagalski Podejścia do realizacji Web Services (6)

Podejście szkieletowe/pionowe Narzędzie do tworzenia własnego protokołu aplikacyjnego Pożądane cechy: system typów model adresowania język opisu usługi sposób wykorzystania protokołów niższego poziomu (ang. bindings) wbudowane mechanizmy bezpieczeństwa Najpopularniejszy przykład: SOAP+WSDL Zmniejsza ilość wymaganej pracy Programista dostaje narzędzia wysokiego poziomu używa kreatora czy też dodaje krótkie adnotacje do metod Implementacja (metody/funkcje) są bezpośrednio mapowane na zewnętrzny interfejs Piotr Domagalski Podejścia do realizacji Web Services (7)

Podejście szkieletowe/pionowe w czym problem? Brak słabego powiązania (and. loosely coupled) interfejsu i implementacji Ukrywana jest spora warstwa niższego poziomu (XML w SOAP-ie) ta warstwa odpowiada jednak za rozszerzalność i interoperacyjność interfejsu Narzędzia zapewniają szybki start, ale standardowy efekt nie nadaje się do profesjonalnych zastosowań złudne poczucie pewności Wiara, że zastosowanie XML-a automatycznie rozwiązuje problem interoperacyjności Duża liczbę nowych protokołów to nie ułatwia integracji Piotr Domagalski Podejścia do realizacji Web Services (8)

Podejście poziome Podejście radykalne nie twórzmy nowego protokołu dla każdego nowego problemu Weźmy jeden lub kilka protokołów ogólnego użytku, które zostały dobrze sprawdzone w praktyce Niech posiada takie cechy, jak: definicję obiektu i operacji na nim: tworzenia, pobierania, uaktualniania, usuwania bezpieczeństwo jednolitą przestrzeń adresową wsparcie dla systemów pośredniech (ang. intermediaries) wykazaną skalowalność rozszerzalność Piotr Domagalski Podejścia do realizacji Web Services (9)

Podejście poziome (2) Przykładem protokół HTTP: szeroko używany przetestowany zasoby identyfikowane za pomocą URI GET, PUT, POST, DELETE (ang. CRUD Create Retrieve Update Delete) TRACE, OPTIONS, HEAD, CONNECT niedoceniany posiada wiele interesujących możliwości Nie rozwiązuje problemu interoperacyjności, ale pozbywamy się jednego źródła problemów Uzgadniamy tylko model danych W podejściu pionowym: szkielet (framework), protokół, sposób adresowania, model danych! Gotowa infrastruktura, np. HTTP cache może działać bez dodatkowej wiedzy o domenie problemu Piotr Domagalski Podejścia do realizacji Web Services (10)

Podejście poziome (3) Jak mógłby wyglądać świat? HTTP jako protokół e-mail Skrzynki identyfikowane przez URI Każda wiadomość ma swoje unikalne ID (URI) Każdy program znający protokół WebDAV (Windows Explorer, Microsoft Office,...) miałby dostep do poczty Zamiast przesyłać duże wiadomości, przesyłalibyśmy referencje (URI) Dlaczego tak nie wygląda? Przekonanie, że nie ma wystarczająco ogólnego protokołu Wystarczyłoby zaufać (przykładowo) HTTP, którego można rozszerzyć (przykład: WebDAV) Piotr Domagalski Podejścia do realizacji Web Services (11)

Często spotykane rozwiązanie Koncepcja bazy danych ogólnego przeznaczenia GetCustomer, DeleteCustomer, InsertCustomer, UpdateCustomer SELECT, DELETE, INSERT, UPDATE Unix > aby nadpisać plik >> aby dodać do pliku < aby odczytać plik rm aby usunać plik Operator w powłoce Ogólnie: wiele rzeczowników, do których stosujemy ograniczoną liczbę czasowników Piotr Domagalski Podejścia do realizacji Web Services (12)

REST Architektura sieci Web to REpresentational State Transfer (REST) definicja Roy a Fieldinga Cele: Skalowalność komponentów sieć Web rozrosła się wykładniczo, a nadal zachowuje wydajność Ogólność interfejsów każdy klient może rozmawiać z serwerem (SOAP?) Niezależne wdrożenia komponentów Komponenty pośrednie: wydajność, bezpieczeństwo, enkapsulacja starych systemów Spełnia założenia podejścia poziomego: HTTP, (X)HTML, Javascript, Java, Flash,... Piotr Domagalski Podejścia do realizacji Web Services (13)

REST 4 zasady Identyfikacja zasobów Manipulacja zasobami poprzez ich reprezentacje Samowystarczalne wiadomości Stan aplikacji reprezentowany przez dokumenty (zasoby) Piotr Domagalski Podejścia do realizacji Web Services (14)

Dla porównania problemy z SOAP Pierwotne cele: System RPC, który poradzi sobię z firewallami Don Box jedyną motywacją był brak w obecnym czasie systemu typów dla XML Nie protokół, a szkielet do tworzenia protokołów Początkowo Simple Object Access Protocol (do wersji 1.1), a później po prostu SOAP Początkowo RPC typu one-way messaging jaka przewaga na CORBA, poza przepisaniem do XML-a? Później... szkielet do przesyłania czegokolwiek 1 jak integrować? 1 RPC/encoded, RPC/literal, Document/encoded, Document/literal Piotr Domagalski Podejścia do realizacji Web Services (15)

Problemów c.d. The Web is simply defined as the universe of global network-accessible information Tim Berners-Lee Systemy udostępniają obiekty w tym świecie W klasycznym podejściu do Web Services (SOAP), Web to tylko transport Praktycznie brak wykorzystania URI Jak wykorzystać standardy W3C (RDF, XPath, XQuery, XSLT, XInclude, etc) skoro zasoby nie są identyfikowalne? Jednolita przestrzeń nazw ułatwia integrację komponentów, które początkowo nie miały być integrowane The utility of an operating system is more proportional to the number of connections possible between its components than it is to the number of those components. Hans Reiser Piotr Domagalski Podejścia do realizacji Web Services (16)

REST oraz HTTP też nie ideał Komunikacja głównie od klienta do serwera Brak dobrego języka opisu WSDL nie jest (jeszcze) odpowiedni Bezpieczeństwo? Wymaga innego podejścia zapomnij o RPC Mniejsze wsparcie wśród narzędzi coś się jednak dzieje, np. JAX-RS: The Java API for RESTful Web Services Piotr Domagalski Podejścia do realizacji Web Services (17)

Stwórzmy więc prosty RESTful Web Service Pytania: 1 Jakie wyróżniamy zasoby (URI)? 2 Jaki format danych? HTTP Content Negotiation 3 Jakie metody HTTP dostępne pod danym URI? 4 Jakie kody w protokole HTTP wykorzystujemy? Piotr Domagalski Podejścia do realizacji Web Services (18)

Zasoby Lista pracowników http://company.com/employees Każdy pracownik http://company.com/employees/1234 Można też pójść dalej http://company.com/employees/1234/phone Zaleta: dostęp do każdego zasobu, można linkować, zapisać w zakładkach Piotr Domagalski Podejścia do realizacji Web Services (19)

Format danych (1) Pracownik: <employee xmlns= http://company.com/ns/employee > <name>full name goes here.</name> <title>person s title goes here.</title> <phone>phone number goes here.</phone> </employee> Piotr Domagalski Podejścia do realizacji Web Services (20)

Format danych (2) Lista pracowników: <employees xmlns= http://company.com/ns/employees > <employeeref href="uri of the first employee"/> <employeeref href="uri of employee #2"/> <employeeref href="uri of employee #N"/> </employees> Piotr Domagalski Podejścia do realizacji Web Services (21)

Metody /employees GET pobierz listę POST dodaj pracownika /employees/1234 GET pobierz reprezentację pracownika PUT uaktualnij dane pracownika POST dodaj dane pracownika DELETE usuń pracownika Piotr Domagalski Podejścia do realizacji Web Services (22)

Zwracane kody HTTP Przykładowo: 200 OK 201 Created 400 Bad Request 401 Unauthorized 404 Not Found 410 Gone Piotr Domagalski Podejścia do realizacji Web Services (23)

Błędne rozumienie REST Samo użycie HTTP nie wystarcza Nadużycia POST Poleganie na strukturze URI Nazwy akcji w URI (w GET!) Sesje Własne identyfikatory obiektów Piotr Domagalski Podejścia do realizacji Web Services (24)

SOAP 1.2 ukłon w stronę REST? POST oraz dodatkowo GET Specyfikacja wspomina (zalecenie) o użyciu SOAP-a w World Wide Web 2 Identyfikacja zasobów w URI Za pomocą GET można pobrać reprezentację danego zasobu Ale kto o tym wie? Jakie narzędzie to wspiera? 2 SOAP Version 1.2 Part 2: Adjuncts, p. 4.1 Piotr Domagalski Podejścia do realizacji Web Services (25)

Bezpieczeństwo a REST SOAP miał za zadanie omijać firewalle Programista nie chce zajmować się kwestiami bezpieczeństwa usługa ma działać Upublicznione zostają interfejsy RPC, na które administrator normalnie by nie pozwolił! Jak monitorować taki ruch? SOAPAction HTTP identyfikuje zasoby oraz operacje na nich te ze skutkami ubocznymi oraz bez DELETE /employees/1234 HTTP/1.1 host: www.company.com Piotr Domagalski Podejścia do realizacji Web Services (26)

Przykład Flickr API Obsługiwane zapytania w XML-RPC, SOAP oraz REST REST nakładka na system RPC pod spodem? REST is the simplest request format to use it s a simple HTTP GET or POST action The REST Endpoint URL is http://api.flickr.com/services/rest/ Nazwa metody zakodowana w URL Brak wykorzystania kodów HTTP To nie jest architektura REST! Piotr Domagalski Podejścia do realizacji Web Services (27)

Przykład Google W okolicach 2000 roku istniało nieudokumentowane API po podmianie /search na /xml dostawaliśmy wyniki wyszukiwania w XML-u Google przeszło na SOAP-a i w Internecie zawrzało: Marketingowy szum wokół SOAP dotarł w końcu do Google a To jak krok do przodu i dwa kroki do tyłu Obfuscating layer over a simple XML/HTTP/URI service Amazon 3, ebay pozostało wtedy przy XML/HTTP/URI 3 W 2004 REST (85%) oraz SOAP Piotr Domagalski Podejścia do realizacji Web Services (28)

Przykład Google obecne API a a http://code.google.com/apis/ 1 Oparte na Google Data API Apps APIs Base Data API Blogger Data API Calendar Data API Code Search Data API Contacts Data API Documents List Data API Notebook Data API Web Albums Data API Spreadsheets Data API YouTube Data API 2 Inne Operte na SOAP: AdSense (for Audio) API, AdWords API AJAX APIs: Feed API, Language API, Search API, Book Search API, Maps API Piotr Domagalski Podejścia do realizacji Web Services (29)

Przykład Google Data API Większość protokołów opiera się na Google Data API wykorzystanie HTTP w duchu REST! Google Data API a simple standard protocol for reading and writting data on the web : Protokół oparty na HTTP: GET, POST, PUT, DELETE oraz kody HTTP Oparte na RSS, Atom i Atom Publishing Protocol (draft) Rozszerzenia formatu Atom Optimistic concurrency Piotr Domagalski Podejścia do realizacji Web Services (30)

Bibliografia http://tomayko.com/writings/rest-to-my-wife How I Explained REST to My Wife http://www.xml.com/pub/a/2002/02/06/rest.html Second Generation Web Services http://www.prescod.net/ strona Paula Prescoda http://rest.blueoxen.net/ REST Wiki http://www.xent.com/pipermail/fork/2001-august/ 002923.html The Dining Philosophers in REST http://webservices.xml.com/pub/a/ws/2002/04/24/ google.html Google s Gaffe http://code.google.com/apis/gdata/overview.html Google Data API Piotr Domagalski Podejścia do realizacji Web Services (31)

A na koniec... Czas na dyskusję! Piotr Domagalski Podejścia do realizacji Web Services (32)