Zastosowanie informatyki w gospodarce Wykład 4



Podobne dokumenty
Mydło i spółka. Aplikacje rozproszone. Serwisy sieciowe Broker usług. Serwisy sieciowe. Serwisy sieciowe, WWW (Web Services) Internet

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

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Programowanie komponentowe

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

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

SOAP. Autor: Piotr Sobczak

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Rozproszone systemy internetowe

Wybrane działy Informatyki Stosowanej

Simple Object Access Protocol

Programowanie Komponentowe WebAPI

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Wywoływanie metod zdalnych

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

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

Wywoływanie metod zdalnych

Zaawansowane aplikacje internetowe. Wykład 6. Wprowadzenie do Web Services. wykład prowadzi: Maciej Zakrzewicz. Web Services

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Komunikacja i wymiana danych

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

Aplikacje RMI

Wybrane działy Informatyki Stosowanej

Wielowarstwowe aplikacje internetowe. Web Services. Autorzy wykładu: Maciej Zakrzewicz Marek Wojciechowski. Web Services

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

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Aplikacje RMI Lab4

Enterprise JavaBeans

Rozproszone systemy Internetowe

1 Wprowadzenie do J2EE

Remote Method Invocation 17 listopada 2010

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

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

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Programowanie obiektowe

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

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

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Plan wykładu. Technologia Web Services. Web Services a WWW

Tworzenie i wykorzystanie usług sieciowych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Sieciowe programowanie rozproszone SOA, WebServices i systemy gridowe. Krzysztof Banaś Systemy rozproszone 1

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

Web Services / Gridy

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Wybrane problemy modelu usługowego

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

76.Struktura oprogramowania rozproszonego.

Usługi sieciowe (Web Services)

Równoległość w środowisku rozproszonym. Jarosław Kuchta Programowanie Współbieżne

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

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

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Mechanizmy pracy równoległej. Jarosław Kuchta

SOA Web Services in Java

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Rozdział ten przedstawia jeden ze sposobów implementacji usług sieciowych XML i aplikacji klienckich w PHP. Oprogramowanie

Programowanie współbieżne i rozproszone

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

Ministerstwo Finansów

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

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

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

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2011/2012. Architektura zorientowana na usługi

Michał Jankowski. Remoting w.net 2.0

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Technologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Integracja Obieg Dokumentów - GiS Spis treści

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

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

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

XML w elektronicznej wymianie danych i integracji aplikacji

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

Zaawansowane aplikacje internetowe - laboratorium

Oprogramowanie dostosowane do potrzeb użytkownika. Skrócenie czasu wejścia na rynek

Web Service y w Javie

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Komponenty sterowane komunikatami

Programowanie współbieżne i rozproszone

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

UDDI & WSDL wykład 10

ABC WCF.

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

OSGi Agata Hejmej

Geovertical Map Server API 1.2

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Java wybrane technologie

Nowoczesne zastosowania XML

Web Services wykład 9

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

XML w elektronicznej wymianie danych i integracji aplikacji

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

Komunikacja międzysystemowa

Transkrypt:

Instytut Informatyki, Automatyki i Robotyki Zastosowanie informatyki w gospodarce Wykład 4 WebSerwisy i SOAP dr inż. Tomasz Walkowiak

Serwisy sieciowe, WWW Web Services dostępne poprzez sieć komponenty aplikacyjne przeznaczonym do wykorzystania przez inne aplikacje, zwane aplikacjami klienckimi hermetyzowane, luźno skojarzone kontraktowane funkcje, oferowane poprzez standardowe protokoły. Hermetyzowane : implementacja nigdy nie jest widoczna z zewnątrz. Luźno skojarzone : modyfikowanie danej implementacji nie generuje problemu propagacji zmiany. Kontraktowane opisy działania funkcji oraz specyfikacja ich interfejsów jest publicznie dostępna Business Process Software Services A B C D 1 2 3 4 5 6 2

Technologie serwisów sieciowych WS-Inspection (Web Services Inspection Language) RDF (Resource Description Framework) DAML (DARPA Agent Markup Language) ebxml UDDI WSDL SOAP XML Podstawowym zakładanym zastosowaniem Web Services było B2B. Praktyka wykazała, że obecnie lepiej rozwijają się jednak jako środek integracji informacyjnej przedsiębiorstwa J2EE (przeważa).net 3 3

WSDL Servlets/CGI vs Web Services Browser Browser GUI Client Web Server HTTP GET/POST JDBC Web Server WSDL SOAP HTTP Web Server WSDL WSDL HTTP SOAP JDBC DB DB 4

Style używania WebSerwsiów RPC (Remote procedure calls) operacje interfejs do wywoływania rozproszonych metod podbne (w funkcjonalności) do CORBA, DCOM, RMI SOA (Service-oriented architecture) komunikaty implementacja architektury zgodnie z koncepcją SOAP: standardized service contracts, loose coupling, abstraction, reusability, autonomy, statelessness, discoverability, composability REST (Representational state transfer) Zorientowanie na komunikacji z ze źródłami zasobów stanowych, a nie komunikatach i operacjach WSDL 2.0 z wszystkimi metodami zapytań HTTP 5

Zasada działania protokołu SOAP 1. aplikacja A koduje RPC w komunikacie SOAP 2. przesłanie komunikatu za pomocą HTTP zapora ogniowa sieć komputerowa SOAP 3. aplikacja B dekoduje komunikat i działa zgodnie z nim zapora ogniowa aplikacja A aplikacja B 3. aplikacja B koduje odpowiedź w innym komunikacie SOAP i przesyła wyniki wykonan 6

SOAP: realizacja modelu RPC wołanie odległej procedury wymaga podania: adres węzła docelowego nazwa procedury/metody wszystkie argumenty przekazywane do metody wyraźne wyodrębnienie danych służących identyfikacji od danych przeznaczonych do przetwarzania dodatkowe informacje w postaci pozycji nagłówkowych wszystkie przekazane argumenty opatrzone są informacją o typie, zgodną z systemem typów XML Schema URI pozwalające zlokalizować właściwą metodę jest przekazywane w sposób zależny od protokołu 7 7

Wołanie RPC ciało komunikatu POST /soap/servlet/rpcrouter HTTP/1.0 Host: localhost:8081 Content-Type: text/xml; charset=utf-8 Content-Length: 451 SOAPAction: "" <?xml version= 1.0 encoding= UTF-8?> <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <ns1:add xmlns:ns1="urn:calculator" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <a xsi:type="xsd:float">2.3</a> <b xsi:type="xsd:float">3.5</b> </ns1:add> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 8 8

Odpowiedź RPC HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 446 Date: Sun, 15 Dec 2002 23:15:58 GMT Server: Apache Tomcat/4.0.4 (HTTP/1.1 Connector) <?xml version= 1.0 encoding= UTF-8?> <SOAP-ENV:Envelope xmlns:soap- ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <ns1:addresponse xmlns:ns1="urn:calculator" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <return xsi:type="xsd:float">5.8</return> </ns1:addresponse> </SOAP-ENV:Body> 9 </SOAP-ENV:Envelope> 9

Podsumowanie - ogólne zasady MUSI być kodowany przy użyciu XML-a MUSI mieć element Envelope MOŻE mieć element Header MUSI mieć element Body MUSI używać odpowiednich przestrzeni nazw NIE MOŻE zawierać referencji do DTD NIE MOŻE zawierać instrukcji procesora XML-a 10 10

Zalety standardu SOAP opiera się na XML niezależny zarówno od języka i od platformy otwartość języka XML oraz ogólna dostępność analizatorów jego składni ułatwiają pisanie aplikacji dużo łatwiejszy w zastosowaniu przenika przez zapory ogniowe 11 11

Wady standardu SOAP kodowanie danych jest mało wydajne, komunikaty są kodowane w formie tekstu, wykorzystują więcej pasma niż równoważne komunikaty binarne, muszą być przekształcane do postaci binarnej, by aplikacja mogła na nich działać. rozwiązanie - analizatorów składni XML, rozbudowane aplikacje i zwiększenie obciążenia CPU 12 12

SOAP i spółka pośrednik - rejestr UDDI 1. publikacja usługi (WSDL) 3. opis usługi i jej dostawcy 2. wyszukiwanie usługi dostawca usługi 5. dostarczenie wyniku SOAP 4. wywołanie usługi potrzebujący usługi 13

14 14

Universal Description, Discovery and Integration Service - UDDI określa wspólny zbiór interfejsów programistycznych dla technologii SOAP, umożliwiając implementację brokerów usług Przedsiębiorstwa prowadzące operacje w Internecie realizują dostęp do usług sieciowych za pośrednictwem rejestru UDDI, który ma za zadanie nawiązać kontakt pomiędzy poszukującym usługi a oferującym ją Rejestry UDDI zawierają: informacje o Web Services na bazie nazwy usługodawcy, jego adresu, kategorii biznesowej, informacji technicznej i tym podobne informacje, operacje dotyczące usługi, to jest: rejestracji, wyszukiwania i korzystania z usługi, szczegóły udostępniane przez niskopoziomowy interfejs programistyczny. UDDI posiadają dwa rodzaje klientów: usługodawców publikujących swoje usługi oraz klientów wyszukujących usług, z których chcą skorzystać. UDDI jest bardzo rzadko używane IBM, Microsoft, i SAP zamkneły sowje publiczne UDDI w 2006 15

WSDL przykład <?xml version= 1.0 encoding= UTF-8?> <SOAP-ENV:Envelope xmlns:soap- ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <ns1:add xmlns:ns1="urn:calculator" SOAP- ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <a xsi:type="xsd:float">2.5</a> <b xsi:type="xsd:float">3.5</b> </ns1:add> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 16

Web Services Description Language usługi Web Services są publikowane w rejestrze e-biznesowy UDDI.. Istnieją generatory plików WSDL na podstawie komponentów programowych Dokument WSDL opisuje, co oferuje usługa, gdzie jest umieszczona oraz jak z niej skorzystać WSDL opisuje technikę współdziałania z usługą. Zakłada, że semantyka usługi jest opisana na zewnątrz i może być jednoznacznie wskazana poprzez identyfikator. Tym samym kontrakt dotyczący znaczenia i celu jest oddzielony od kontraktu określającego mechanikę współdziałania. Specyfikacja zatem nie zajmuje się problemem definiowania semantyki usługi. 17

Narzędzia do tworzenia WebService ów w Javie Apache Axis 1.4 (2006) Client/Server; SOAP, WSDL Apache Axis2 (1.5.2) Client/Server/Asynch Support; SOAP, WSDL, WSDL 2, REST Apache CFX Client/Server/Asynch Support; SOAP, WSDL, WSDL 2, REST, MTOM Java WebServices Dev Pack (Glassfish) Client/Server; SOAP, WSDL Xfire Client/Server; SOAP, WSDL 18

AXIS 1.x klient (1) Pobrać WSDL dodać?wsdl do URL http://localhost/example.jws?wsdl Zkonwertować WSDL na klasę Jawy poprzez java WSDL2Java Pamięctać należy o ustawieniu plików jar do class path Kawałek WSDL-a <xs:complextype name="mathinput"> <xs:sequence> <xs:element name="x" type="xs:double"/> <xs:element name="y" type="xs:double"/> </xs:sequence>... <xs:element name="add" type="mathinput"/> <xs:element name="addresponse" type="mathoutput"/> <message name="addmessage"> <part name="parameters" element="ns:add"/> </message> <porttype name="mathinterface"> <operation name="add"> <input message="y:addmessage"/> <output message="y:addresponsemessage"/> </operation> 19

AXIS 1.x klient (2) Dla przykładu gererowane są 4 klasy (w pakiecie) MathService.java MathServiceLocator.java MathSoapHttpBindingStub.java MathInterface.java package org.example.math; public interface MathInterface extends java.rmi.remote { public double add(double x, double y) throws java.rmi.remoteexception; } Zaimportowanie pakietu i użycie we własnej klasie MathServiceLocator loc= new MathServiceLocator(); MathInterface service = loc.getmathendpoint(); double res = service.add(2,3); 20

AXIS 1.x - WSDL2Java Bazujac na WSDL program WSDL2Java generuje klasy w pakciecie zdefiniowanym przez namespace dla porttype - interface dla binding - stub class dla service interfejs i implementacje (lokator) serwisu Dla każdego wpisu w sekcji type klasę Javy Klasa Jawy będzie nazywana tka jak typ w WSDL i najczęściej będzie ziarnem Javy <xsd:complextype name="phone"> <xsd:all> <xsd:element name="areacode" type="xsd:int"/> <xsd:element name="exchange" type="xsd:string"/> <xsd:element </xsd:all> </xsd:complextype> public class Phone implements java.io.serializable { public Phone() {...} public int getareacode() {...} public void setareacode(int areacode) {...} public java.lang.string getexchange() {...} public void setexchange(java.lang.string exchange) {...} 21

Axis 1.x Web Service Zainstalować Axis 1.x w Tomcat (po prostu skopiować) Utworzyć klasę w Javie - POJO public class AddFunction { } public int addint(int a, int b){ } return (a+b); Skopiować do webapps/axis/ zmieniając rozszerzenie na *.jws Gotowe http://localhost:8080/axis/addfunction.jws?wsdl 22

User Application Client API ( Interceptors ) Handlers Transport Sender Transport Listener ( Interceptors ) Handlers Message Receiver Web Service Business Logic Axis2 Architecture Service Consumer Service Provider SOAP 23

Axis 2 package samples.quickstart.service.pojo; import java.util.hashmap; public class StockQuoteService { private HashMap map = new HashMap(); public double getprice(string symbol) { Double price = (Double) map.get(symbol); if(price!= null) return price.doublevalue(); return 42.00; } public void update(string symbol, double price) { map.put(symbol, new Double(price)); }} %AXIS2_HOME%\bin\java2wsdl -cp. -cn samples.quickstart.service.pojo.stockquoteservice -of StockQuoteService.wsdl 24 24

Axis 2 - services.xml <service name="stockquoteservice" scope="application"> <description> Stock Quote Sample Service </description> <messagereceivers> <messagereceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.rpcinonlymess agereceiver"/> <messagereceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.rpcmessagerec eiver"/> </messagereceivers> <parameter name="serviceclass"> samples.quickstart.service.pojo.stockquoteservice</ parameter> </service> 25 25

AXIS 2 Utworzyć katalog META-INF i wgrać services.xml Utworzyć jar (aar): jar -cvf StockQuoteService.aar * skopiować StockQuoteService.aar do webapps/axis2/web-inf/services Dostęp: http://localhost:8080/axis2/services/stockquoteservice/getpric e?symbol=ibm Klient: WSDL2Java.bat -uri http://localhost:8080/axis2/services/ StockQuoteService?wsdl -o /path/to/my/client/code/ 26 26

WSDL.exe od MS Web Services Description Tool Tworzy klasę klienta Wejście: URL do pliku WSDL, protokół, język pliku wynikowego Username and password Wyjście: Pojedynczy plik zrodlowy klasy w danym języku, zawierający: Proxy class Kod do wykonania zapytania w sieci i marshalling wsdl /l:c# /protocol:protocol /out:filename /namespace:mathservicespace MathService.sdl 27

Przykład C# wygenerowany przez WSDL.exe [System.Web.Services.Protocols. SoapDocumentMethodAttribute( http://tempuri.org/add )] public int Add(int a, int b) { object[] results = this.invoke( Add, new object[] {a, b}); } return (int)(results[0]);... public System.IAsyncResult BeginAdd(... public int EndAdd(... 28

WebService podsumowanie Zalety Banalne wdrożenie Serwer i klient Brak problemu z firewallami (HTTP) bezpieczeństwo (HTTPS) Łatwość tworzenia komunikacji w heterogonicznym środwisku Wady np. Java <->.Net Duży rozmiar komunikatów (SOAP w XML) ciężkie serwery 29

Przykład Wyszukiwanie najtańszej książki 30