Classificazione dei Web Services



Похожие документы
Client e Server comunicano tramite il protocollo SOAP.

Introduzione ai Web Services Alberto Polzonetti

Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005

Lezione 1 Introduzione

Seminario di Sistemi Distribuiti RPC su SOAP

RMI. Java RMI RMI. G. Prencipe

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Un introduzione ai Web service

Il Web-Service SDMX dell ISTAT

fornitore di servizi utente all interazione tra utenti e sistemi

Web Services Dogane LINEE GUIDA

1 Vincenzo de Stefano SAP e Servizi Web

Web Services. Scoperta del servizio UDDI. Descrizione del servizio WSDL. Accesso al servizio SOAP XML. Starto di comunicazione HTTP

Programmazione di servizi web SOAP

DOCFINDERWEB SERVICE E CLIENT

Java Web Services. Uso di Eclipse e Apache Axis

Web Services Security

Plus srl :: :: :: Via Morgagni, 4/A Verona :: Tel :: Fax

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO

Tale attività non è descritta in questa dispensa

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

PRACTICAL DEVELOPMENT OF A WEB SERVICE

1 EJB e Portal Component Object

Programmazione a Oggetti Lezione 10. Ereditarieta

appunti delle lezioni Architetture client/server: applicazioni client

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Introduzione alle applicazioni di rete

Definizione di Web service (2) Un introduzione ai Web service. Caratteristiche dei Web service. Valeria Cardellini Università di Roma Tor Vergata

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Java: Compilatore e Interprete

Java Remote Method Invocation

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Web Service SOAP e WSDL. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com

Presentazione di Cedac Software

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Oreste Signore, Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, Pisa

Capitolo 4 Pianificazione e Sviluppo di Web Part

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

Candidato: Luca Russo Docente: Prof. Raffaele Montella. 27 Marzo 2013

Corso di Informatica Modulo T3 B2 - Database in rete

Programmazione server-side: Java Servlet

Portale regionale della Salute. Servizi di prenotazione prestazione e pagamento ticket.

Programmazione di sistemi distribuiti

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

1 JSPDynPage, componenti portale e Java Server Pages

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

RMI Remote Method Invocation

Protocolli applicativi: FTP

Socket & RMI Ingegneria del Software - San Pietro

Ministero del Lavoro e delle Politiche Sociali

Modelli per la descrizione di protocolli

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

Programmazione distribuita

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Il Web-Service SDMX dell ISTAT

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Integration Software S.r.l.

Web Service Architecture

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Il Registro dei Servizi di OpenSPCoop i. Il Registro dei Servizi di OpenSPCoop

Approfondimento. Web Services

Distributed Object Computing

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited

Client - Server. Client Web: il BROWSER

Spring WS Sviluppare WebService in Java

Programmazione dei socket con TCP #2

Come funziona internet

Siti interattivi e dinamici. in poche pagine

Comunicazione tra Processi

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Corso Eclipse. Prerequisiti. 1 Introduzione

IBM Software Demos The Front-End to SOA

Reti di Telecomunicazione Lezione 6

RMI: metodi equals e hashcode

Java Enterprise Edi.on. Gabriele Tolomei DAIS Università Ca Foscari Venezia

Application Server per sviluppare applicazioni Java Enterprise

Introduzione a Java Remote Method Invocation (RMI)

Introduzione a Service Oriented Architecture e Web Service

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

SVI Nuovo Sistema Revisioni

Strumenti per la programmazione

Progettazione : Design Pattern Creazionali

Транскрипт:

Web Services Programmazione in ambienti distribuiti Anno 2004-2005 Claudio Zunino Classificazione dei Web Services Interattiva il client è umano ed utilizza tipicamente un web browser Sviluppati usando Servlets/JSP/... application-to-application dove il client è un programma che interagisce con un altro programma Descritti di seguito... Web services combinano il protocollo HTTP e l XML come formato per i dati In questo modo sfruttano i vantaggi di entrambe le tecnologie. 1

Definizione di Web Services "I Servizi Web sono componenti di software riutilizzabili, debolmente accoppiati che incapsulano semanticamente le funzionalità discrete e sono programmaticamente accessibili e distribuiti su e dai protocolli standard di Internet." Componenti riutilizzabili I Servizi Web proseguono nella lunga ascensione del progetto di oggetti distribuiti nello sviluppo del software. Piuttosto di richiedere ai programmatori di scrivere un insieme di istruzioni dall'inizio alla fine, una dopo l'altra, il modello basato su componenti premette agli sviluppatori di riutilizzare i blocchi di costruzione di codice creati da altri, per assemblarli, adattarli ed estenderli, a seconda delle esigenze. 2

Debolmente accopiati Il progetto di un'applicazione tradizionale dipende da un'interconnessione stretta tra tutti gli elementi utilizzati. La complessità di queste interconnessioni richiede che gli sviluppatori comprendano appieno ed abbiano un totale controllo su entrambe i lati della connessione. Inoltre, una volta che tale connessione venga stabilita, sarà estremamente difficile estrarre un elemento e rimpiazzarlo con un altro. Sistemi debolmente accoppiati richiedono un livello di coordinazione assai semplificato, e permettono una riconfigurazione più flessibile. Autodescrizione "incapsulano semanticamente la funzionalità discreta". Un Servizio Web si presenta come un applicazione autonoma che effettua una singola operazione. La componente descrive i propri input ed output in modo che ogni altro software possa determinare cosa fa il servizio, come invocare le sue funzionalità e quale risultato si aspetta di ritorno. 3

Accessibili da programmi "sono accessibili programmaticamente". Diversamente dalle applicazioni per siti Web e desktop, i Servizi Web non sono stati progettati per una diretta interazione umana, quindi non hanno un'interfaccia grafica. Piuttosto operano a livello di codice poiché sono chiamati per lo scambio di dati con altri software. Protocolli molto conosciuti "distribuiti su Internet". Infatti fanno uso di protocolli esistenti di grande diffusione come HTTP. Supportandoli, i Servizi Web fanno leva sulle infrastrutture già esistenti e possono conformarsi alle politiche dei firewall aziendali correnti. 4

WSDL, SOAP, UDDI La piattaforma Web Services usa: SOAP Acronimo per: Simple Object Access Protocol un framework per lo scambio di informazioni in una rete, basato su XML "This is no longer the case." (it is neither simple nor has anything to do with objects) WSDL Acronimo per: Web Service Description Language Un linguaggio basato sull XML per descrivere servizi sulla rete Il WSDL descrive sia le possibilità che la posizione dei servizi Può essere visto come un linguaggio per la descrizione delle interfacce di Web services UDDI Acronimo per: Universal Description, Discovery, and Integration Fornisce un meccanismo affinchè client e server possano trovarsi Usa SOAP per le comunicazioni WSDL I WSDL è un linguaggio basato sull XML che permette una descrizione formale delle interfacce dei Web Services Quale interazione offre il servizio Quali argomenti e risultati sono utilizzati nell interazione Quale indirizzo di rete viene usato per individuare il service Quale protcollo di comunicazione bisogna usare Con quale formato sono rappresentati I messaggi Vantaggi L interfaccia è come se fosse un contratto tra gli sviluppatori del server e quelli del client Avere una descrizione formale permette l uso di strumenti automatici, per esempio per generare codice (progetto Apache AXIS) 5

WSDL II Un File WSDL può essere visto come composto da due parti: Il livello di definizione del servizio per descrivere proprietà astratte Tipo dei dati Tipo dei messaggi Operazioni Servizi Il livello per il binding per descrivere proprietà più concrete : Protocolli Formati dei dati Esempio di WSDL I <?xml version="1.0" encoding="utf-8"?> <definitions name="myhelloservice" targetnamespace="urn:foo" xmlns:tns="urn:foo" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <types/> <message name="helloif_sayhello"> <part name="string_1" type="xsd:string"/></message> <message name="helloif_sayhelloresponse"> <part name="result" type="xsd:string"/></message> <porttype name="helloif"> <operation name="sayhello" parameterorder="string_1"> <input message="tns:helloif_sayhello"/> <output message="tns:helloif_sayhelloresponse"/></operation></porttype> 6

Esempio di WSDL II <binding name="helloifbinding" type="tns:helloif"> <operation name="sayhello"> <input> <soap:body encodingstyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="urn:foo"/></input> <output> <soap:body encodingstyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="urn:foo"/></output> <soap:operation soapaction=""/></operation> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/></binding> <service name="myhelloservice"> <port name="helloifport" binding="tns:helloifbinding"> <soap:address location="http://localhost:8080/hello-jaxrpc/hello"/> </port></service></definitions> SOAP Usare SOAP significa: Quando bisogna spedire un messaggio, bisogna includerlo in un involucro ( envelope ) SOAP Quando si riceve uno di questi messaggi, estrarne il contenuto dall involucro SOAP Un envelope contiene: un header (facoltativo) che contiene informazioni sul messaggio un body che contiene la parte significativa del messaggio 7

Esempio di SOAP <?xml version='1.0'?> <env:envelope xmlns:env="http://www.w3.org/2002/06/ soap-envelope"> <env:header> Intestazione </env:header> <env:body> Contenuto </env:body> </env:envelope> UDDI UDDI: un meccanismo per registrare Web Services UDDI business registration: file XML usati per descrivere, per esempio, i servizi offerti nel campo business Pagine bianche indirizzi, contatti, info, etc. Pagine gialle orientate alle industrie Pagine verdi informazioni più tecniche, per esempio descrizioni in WSDL UDDI fornisce anche una serie di API basate su SOAP+WSDL per registrare ("publish") and scoprire ("inquire") Web services. 8

Unatipicasessione SOAP message <element name= Customer > <element name= account > </element> 1 Service description using WSDL Service provider 4 Directory SOAP message <element name= Customer > <element name= account > </element> SOAP message <m: GetCustomerInfInfo> <account>220</account> </m GetCustomerInfo> XML service request XML service response <m: GetCustomerInfInfo> <account>220</account> </m GetCustomerInfo> SOAP message Service description using WSDL 5 3 Directory queries 2 Service consumer Apache ant E un tool basato su Java per la compilazione di programmi Java Utilizza un file XML per la compilazione di un progetto. Ogni build.xml contiene un progetto e almeno un target (es. compile, build, dist, deploy...) 9

Apache ant Utilizza delle librerie di Tomcat per eseguire in automatico diverse operazioni Installazione di web application Disinstallazione di web application Nell esempio compila un client stub raggiungendo il WSDL Esempio di build.xml <project name="myproject" default="dist" basedir="."> <description> simple example build file </description> <!-- set global properties for this build --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <!-- Create the time stamp --> <tstamp/> <!-- Create the build directory structure used by compile --> <mkdir dir="${build"/> </target> 10

Esempio di build.xml <target name="compile" depends="init" description="compile the source " > <!-- Compile the java code from ${src into ${build --> <javac srcdir="${src" destdir="${build"/> </target> <target name="clean" description="clean up" > <!-- Delete the ${build and ${dist directory trees --> <delete dir="${build"/> <delete dir="${dist"/> </target> </project> Esempio di service I Interfaccia HelloIF package helloservice; import java.rmi.remote; import java.rmi.remoteexception; public interface HelloIF extends Remote { public String sayhello(string s) throws RemoteException; 11

Esempio di service II Classe HelloImpl package helloservice; public class HelloImpl implements HelloIF { public String message ="Hello "; public String sayhello(string s) { return message + s; Esempio di client statico import javax.xml.rpc.stub; public class HelloClient { private String endpointaddress; public static void main(string[] args) { try { Stub stub = createproxy(); stub._setproperty (javax.xml.rpc.stub.endpoint_address_property, args[0]); HelloIF hello = (HelloIF)stub; System.out.println(hello.sayHello("Duke!")); catch (Exception ex) { ex.printstacktrace(); private static Stub createproxy() { // Note: MyHelloService_Impl is implementation-specific. return (Stub) (new MyHelloService_Impl().getHelloIFPort()); 12

Esempio di client dinamico I public class HelloClient { public static void main(string[] args) { try { String UrlString = args[0] + "?WSDL"; String namespaceuri = "urn:foo"; String servicename = "MyHelloService"; String portname = "HelloIFPort"; System.out.println("UrlString = " + UrlString); URL hellowsdlurl = new URL(UrlString); ServiceFactory servicefactory = ServiceFactory.newInstance(); Esempio di client dinamico II Service helloservice = servicefactory.createservice(hellowsdlurl, new QName(nameSpaceUri, servicename)); dynamicproxy.helloif myproxy = (dynamicproxy.helloif) helloservice.getport( new QName(nameSpaceUri, portname), dynamicproxy.helloif.class); System.out.println(myProxy.sayHello("Buzz")); catch (Exception ex) { ex.printstacktrace(); 13

Riferimenti J2EE 1.4 http://java.sun.com/j2ee/1.4/download.ht ml Tutorial http://java.sun.com/j2ee/1.4/docs/tutorial/ doc/index.html 14