Integracja aplikacji Wykład 4

Slides:



Advertisements
Podobne prezentacje
Longhorn Academy - AD Warszawa, 12 kwietnia 2007
Advertisements

Równoległość w środowisku rozproszonym
Mechanizmy pracy równoległej
Programowanie w Środowiskach Zintegrowanych
Decyzje projektowe w .NET Framework
Sieci komputerowe Usługi sieciowe Piotr Górczyński 27/09/2002.
Tworzenie portali z wykorzystaniem technologii Sun Java Enterprise Systems Joanna Kosińska
SQL Server Native XML Web Services
WEB SERVICE Stefan Rutkowski.
CORBA Łukasz Wnęk.
Service Oriented Architecture & Web Services
Uwierzytelnianie i autoryzacja dostępu do portali
XML w integracji aplikacji
11 XML w integracji aplikacji. 22 Cel: umożliwienie wymiany danych pomiędzy aplikacjami: aplikacje/komponenty/moduły posługują się różnymi formatami wewnętrznymi,
XML w integracji aplikacji 11 grudnia XML w integracji aplikacji Cel: umożliwienie wymiany danych pomiędzy aplikacjami: aplikacje/komponenty/moduły.
Opracował: Patryk Kołakowski(s1715)
.NET - możliwości Jarosław Balcer & Jan Góralski.
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
Internet Communication Engine
Eclipse jako IDE III a.
Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API Waldek Kot.
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Proxy WWW cache Prowadzący: mgr Marek Kopel
Proxy (WWW cache) Sieci Komputerowe
Information Bridge Framework platforma integracji Microsoft Office 2003 z aplikacjami Line of Business Krzysztof Michalski10/01/2005.
Enteprise Java Beans Emil Wcisło.
Wzorce projektowe w J2EE
Architektura SOA.
Usługi katalogowe LDAP.
OData – dzielmy się danymi!
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Platformy Technologiczne web services
Aplikacje Internetowe
Integracja aplikacji Wykład 2
Web Serwisy w praktyce Technologie internetowe ( )
Rozwój aplikacji. To zestaw narzędzi do budowania i optymalizacji złożonych aplikacji opartych na przeglądarce. To zestaw narzędzi do budowania i optymalizacji.
… iSCSI … Windows Server 2012 Łukasz Dylewski.
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Licencjonowanie aplikacji serwerowych
Programowanie obiektowe – zastosowanie języka Java SE
Tworzenie aplikacji webowych w oparciu o framework ObjectLedge
Integracja aplikacji Wykład 4
Aplikacja od SaaS do IdaaS
S IMON SAYS … A RCHITECTURE ! Usługi zdalne Technologie, techniki i praktyki implementacji.
Rozdział V: Globalne sieci komputerowe
OWASP + DevOps, kilka przydatnych narzędzi
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Technologie programowania systemów internetowych
Clustering Technologia klastrowa - architektura łącząca serwery i urządzenia pamięci masowych w celu zwiększenia niezawodności, bezpieczeństwa i wydajności.
Zagrożenia.
Mapy i dane Open Street Map Technogie map cyfrowych Andrzej Chybicki.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
FTP i www Informatyka Zakres podstawowy 1 Zebrał i opracował : Maciej Belcarz 11.
Active Directory Federation Services w Windows Server 2012 R2
SERWIS PORTALU ONTOLOGICZNEGO DEDYKOWANY DLA SYSTEMU OCS.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
XML w serwisach webowych. Zapotrzebowanie na serwisy XML.
Połączenia aplikacji Klient/Serwer
Komponentowe i rozproszone Interludium czyli krótki wykład o rozpraszaniu.
Maciej Wierzchowski Mariusz Sołtysiak. Założenia  Autentykacja użytkownia  Autentykacja dostawcy  Zapewnienie bezpiecznego połączenia.
Usługi webowe & Service- Oriented Architecture (SOA) S2523 Anna Jenerowicz.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Wydział Matematyki, Informatyki i Architektury Krajobrazu
Sieci komputerowe Usługi sieciowe 27/09/2002.
Programowanie obiektowe – zastosowanie języka Java SE
Windows Workflow Foundation
Aplikacje i usługi internetowe
Zapis prezentacji:

Integracja aplikacji Wykład 4 Piotr Czapiewski Wydział Informatyki ZUT Integracja aplikacji Wykład 4

RESTful Web Services

REST – styl architektoniczny REpresentational State Transfer Praca doktorska Roya Fieldinga „Architectural Styles and the Design of Network-based Software Architectures” („The REST bible”) http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm Określony poprzez zbiór ograniczeń (constraints), które należy spełnić Odpowiada zasadom leżącym u podstaw HTTP Web, HTTP, URI – jedna z możliwych realizacji

RESTful HTTP „The Web Used Correctly” Architektura systemu lub aplikacji Ściśle związana z Siecią Wykorzystująca HTTP, URI i inne standardy Webowe we właściwy sposób Inne określenia: Web-Oriented Architecture (WOA) Resource-Oriented Architecture (ROA)

REST – podstawowe zasady Give Every „Thing” an ID Link Things To Each Other Use Standard Methods Allow for Multiple „Representations” Communicate Statelessly

1. Give Every „Thing” an ID Identyfikuj wszystko, co zasługuje na identyfikację Wysokopoziomowe zasoby, abstrakcje, fizyczne lub wirtualne obiekty, kolekcje obiektów, wyniki obliczeń, procesy Zunifikowane, globalne ID = URI http://example.com/customers/1234 http://example.com/orders/2007/10/776654 http://example.com/products/4554 http://example.com/processes/salary-increase-234 Sprawdzona, zrozumiała, globalna przestrzeń nazw Możliwość przesłania linka do zasobu

2. Link Things To Each Other „Hypermedia as the engine of application state” „Hyperlinking is what makes the Web the Web” Wykorzystuj hiperlinki do opisu relacji pomiędzy obiektami <order self='http://example.com/customers/1234' > <amount>23</amount> <product ref='http://example.com/products/4554' /> <customer ref='http://example.com/customers/1234' /> </order>

3. Use Standard Methods Każdy zasób identyfikowany przez URI wspiera ten sam interfejs: Operacje zdefiniowane w specyfikacji HTTP Metody GET, POST, PUT, DELETE Obiektowa analogia zasobu w RESTful HTTP: class Resource { Resource(URI u); Response get(); Response post(Request r); Response put(Request r); Response delete(); }

3. Use Standard Methods Znaczenie metod HTTP GET – zwróć reprezentację zasobu POST – utwórz nowy zasób, aktualizuj lub dołącz zasób podrzędny PUT – aktualizuj lub utwórz zasób DELETE – usuń zasób Bezpieczeństwo i idempotencja: GET, PUT, DELETE HTTP CRUD POST Create, Update GET Read PUT Update, Create DELETE Delete

3. Use Standard Methods

3. Use Standard Methods

3. Use Standard Methods

3. Use Standard Methods Każdy komponent rozumiejący HTTP może wchodzić w interakcję z naszą aplikacją Przeglądarka WWW curl, wget Proxy, cache, serwer HTTP Google

4. Allow for Multiple Representations Obsługa wyniku operacji Skąd klient ma wiedzieć, jakie dane otrzyma, np. w wyniku żądania GET? Separacja koncepcji wywołania operacji i obsługi wyniku Klient obsługuje konkretny format i o taki format prosi HTTP content negotiation

4. Allow for Multiple Representations Dobra praktyka: Udostępnienie XML i HTML Umożliwienie dostępu nie tylko konkretnej aplikacji, lecz także standardowej przeglądarce WWW Informacja dostępna dla każdego, kto potrafi korzystać z WWW Web UI = Web API Dostęp do aplikacji przez człowieka i przez maszynę

5. Communicate Statelessly Komunikacja bezstanowa Stan aplikacji zapisany jako stan zasobu lub Stan aplikacji zapisany po stronie klienta Serwer nie powinien przechowywać informacji o stanie komunikacji z klientem ponad to, co dotyczy bieżącego, pojedynczego żądania

REST a komponenty HTTP Pełne wykorzystanie operacji HTPP Negocjacja formatu zawartości GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE Przekierowanie Caching Kompresja Ustandaryzowane kody odpowiedzi 403 – brak dostępu 404 – zasób nie odnaleziony 500 – błąd aplikacji

REST vs. SOAP SOAP Web Services RESTful Web Services „Web” tylko w nazwie – słaba integracja z HTTP, ignorowanie cech Internetu „Protocol independence is a bug, not a feature” Osobny interfejs dla każdej usługi, protokół zależny od aplikacji Niewielkie różnice w stosunku do starszych rozwiązań (CORBA, DCOM, RMI) – „CORBA with angle brackets” RESTful Web Services Jeden, wspólny dla wszystkich interfejs Mapowanie podstawowych operacji na semantykę zasobów Standardowy protokół aplikacji (HTTP) Słabsze wsparcie ze strony narzędzi

REST vs. SOAP SOAP Web Services RESTful Web Services Przywiązanie do XML Duże narzuty w komunikacji RESTful Web Services Obsługa XML i innych formatów Lekkie komunikaty <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body pb="http://www.acme.com/phonebook"> <pb:GetUserDetails> <pb:UserID>12345</pb:UserID> </pb:GetUserDetails> </soap:Body> </soap:Envelope> http://www.acme.com/phonebook/UserDetails/12345

REST vs. SOAP – przykład żądania <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body pb="http://www.acme.com/phonebook"> <pb:GetUserDetails> <pb:UserID>12345</pb:UserID> </pb:GetUserDetails> </soap:Body> </soap:Envelope> http://www.acme.com/phonebook/UserDetails/12345

REST vs. SOAP – przykład odpowiedzi <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body pb="http://www.acme.com/phonebook"> <pb:GetUserDetailsResponse> <pb:User> <pb:UserID>12345</pb:UserId> <pb:Name>Jan Kowalski</pb:Name> <pb:Phone>911234567</pb:Name> <pb:Email>jkowal@poczta.pl</pb:Email> </pb:User> </pb:GetUserDetailsResponse> </soap:Body> </soap:Envelope> <?xml version="1.0"?> <User> <UserID>12345</UserId> <Name>Jan Kowalski</Name> <Phone>911234567</Name> <Email>jkowal@poczta.pl</Email> </User>

REST vs. SOAP SOAP Web Services RESTful Web Services 1 URL dla każdej usługi 1 metoda POST, wiele operacji RESTful Web Services Osobny URL dla każdego zasobu Kilka wspieranych metod (GET, PUT,POST, DELETE) Cacheable, addressable, linkable…

REST i SOAP a style integracji Remote Procedure Call SOAP Messaging

REST vs. SOAP Co z bezpieczeństwem, szyfrowaniem, obsługą sesji, QoS, itd.? RESTful Web Services Brak standardowych mechanizmów Możliwość budowy własnych rozwiązań SOAP Web Services W podstawowych standardach – brak Rodzina protokołów WS-*

REST vs. SOAP REST Właściwy dla prostych scenariuszy integracji Właściwe dla API publicznych SOAP Właściwy w zaawansowanych scenariuszach integracji w środowiskach korporacyjnych Właściwe dla API prywatnych

RESTful Web Services – przykłady Dostępne usługi Google Base, GData, Calendar, Documents, Blogger, Notebook, Picasa Amazon Simple Storage Service, Queue Service, Flexible Payment, Search Narzędzia Sun Jersey, JSR 311 IBM Abdera, Project Zero Microsoft WCF

RESTful Web Service – przykłady Online REST Web Service Demo http://www.thomas-bayer.com/rest-demo.htm Baza danych SQL udostępniona jako usługa REST Pobieranie, edycja, dodawanie, usuwanie wierszy/obiektów http://www.thomas-bayer.com/sqlrest/ http://www.thomas-bayer.com/sqlrest/CUSTOMER/18/ http://www.thomas-bayer.com/sqlrest/INVOICE/

RESTGate – webowy klient usług REST http://www.thomas-bayer.com/restgate/

Implementacja REST Java i biblioteka JAX-RS

REST i Java – JAX-RS JAX-RS: Java API for RESTful Web Services Część standardu Java EE 6 Standardowe API upraszczające tworzenie usług REST Oparte na adnotacjach Implementacje Jersey – implementacja referencyjna (Sun/Oracle) Apache CXF RESTEasy (JBoss)

Adnotacje JAX-RS Mapowanie klas/metod do zasobów webowych @Path @GET, @PUT, @POST, @DELETE Mapowanie parametrów żądania do parametrów metody @PathParam, @QueryParam, @HeaderParam, @CookieParam, @FormParam Określenie typów MIME dla reprezentacji zasobów @Produces @Consumes

Serwer usługi REST w JAX-RS package pc.rest; import javax.ws.rs.GET; import javax.ws.rs.Path; @Path("hello") public class HelloRest { @GET public String hello() { return "Witamy w JAX-RS"; } http://localhost:8080/RestTest01/resources/hello

Serwer usługi REST w JAX-RS Obsługa metod HTTP: GET POST PUT DELETE @Path("user") public class UsersService { @GET public String getUser() { // ... } @POST public String addUser() { @PUT public String updateUser() { @DELETE public String deleteUser() {

Serwer usługi REST w JAX-RS Negocjacja zawartości Tekst, XML, JSON Adnotacja @Produces Nagłówek HTTP accept @GET @Produces("text/plain") public String helloText() { return "Witamy w JAX-RS"; } @Produces("text/html") public String helloHtml() { return "<h1>Witamy w JAX-RS</h1>"; @Produces("application/xml") public String helloXml() { return "<komunikat>" + "<nadawca>Admin</nadawca>" + "<tresc>Witamy w JAX-RS</tresc>" + "</komunikat>";

Serwer usługi REST w JAX-RS Parametry żądania @Path("hello/{imie}") public class HelloRest { @GET @Produces("text/plain") public String helloText(@PathParam("imie") String imie) { return "Witaj w JAX-RS, " + imie; } http://localhost:8080/RestTest01/resources/hello/Piotr

Klient Rest – Java

Klient Rest – Java

Klient Rest – PHP Biblioteka Pest – https://github.com/educoder/pest

Literatura L. Richardson, S. Ruby: RESTful Web Services http://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260 A Brief Introduction to REST http://www.infoq.com/articles/rest-introduction Addressing Doubts about REST http://www.infoq.com/articles/tilkov-rest-doubts REST Anti-Patterns http://www.infoq.com/articles/rest-anti-patterns Tutorial: Jersey + Tomcat http://www.suryasuravarapu.com/2009/02/rest-jersey-configuration-on-tomcat.html http://www.suryasuravarapu.com/2009/03/rest-crud-with-jax-rs-jersey.html