Corso di Architetture Distribuite e Servizi di Rete. Web Services. Antonio Corradi & Paolo Bellavista. Web Services



Documenti analoghi
MIDDLEWARE E COMPONENTI: direzioni di evoluzione e stato dell'arte

MIDDLEWARE E COMPONENTI: direzioni di evoluzione e stato dell'arte

Introduzione ai Web Services Alberto Polzonetti

Seminario di Sistemi Distribuiti RPC su SOAP

La Roadmap dello sviluppo per System i5: dalle Applicazioni Legacy alla SOA

Presentazione di Cedac Software

Introduzione alle applicazioni di rete

fornitore di servizi utente all interazione tra utenti e sistemi

Siti web centrati sui dati (Data-centric web applications)

Web Service Architecture

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO

Implementazione di MVC. Gabriele Pellegrinetti

Reti di Telecomunicazione Lezione 6

Laboratorio di RETI DI CALCOLATORI

Framework. Impianti Informatici. Web application - tecnologie

Applicazioni web centrati sui dati (Data-centric web applications)

Distributed Object Computing

Sistemi informativi secondo prospettive combinate

Integration Software S.r.l.

Seminario di Sistemi Distribuiti: RPC su SOAP

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

SVI Nuovo Sistema Revisioni

B.P.S. Business Process Server ALLEGATO C10

Architetture Informatiche. Dal Mainframe al Personal Computer

Architetture Informatiche. Dal Mainframe al Personal Computer

Progetto di Applicazioni Software

ICT (Information and Communication Technology): ELEMENTI DI TECNOLOGIA

Lo scenario: la definizione di Internet

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

Simple & Efficient.

CORBA ( Common Object Request Broker Architecture ) Le specifiche più conosciute sono UML e CORBA

Active Directory. Installatore LAN. Progetto per le classi V del corso di Informatica

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Protocolli applicativi: FTP

Protocolli e architetture per WIS

Tecnologie di Sviluppo per il Web

Ministero del Lavoro e delle Politiche Sociali

automation using workflow technology and web services Vassilacopoulos Med. Inform. (September 2003) vol. 28, no. 3,

Corso di Reti di Calcolatori LS

@2011 Politecnico di Torino. Pag. 1. Architettura distribuita. Architetture Client/Server. Architettura centralizzata. Architettura distribuita

Progetto di Applicazioni Software

Programmare in ambiente Java Enterprise: l offerta formativa di Infodue

Informatica. Prof. M. Colajanni Università di Modena Reggio Emilia

Architetture Web: un ripasso

Appendice D. D. Web Services

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

Progettazione: Tecnologie e ambienti di sviluppo

WEB SERVICES. MIDDLEWARE nel supporto a sistemi

La sintassi di un DTD si basa principalmente sulla presenza di quattro dichiarazioni:

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

POR Calabria FSE 2007/2013 Asse II Occupabilità Obiettivo operativo D1

Reti di Telecomunicazione Lezione 7

Finalità delle Reti di calcolatori. Le Reti Informatiche. Una definizione di Rete di calcolatori. Hardware e Software nelle Reti

Modelli per la descrizione di protocolli

b) Dinamicità delle pagine e interattività d) Separazione del contenuto dalla forma di visualizzazione

Una piattaforma per la negoziazione di servizi business to business attraverso la rete Internet

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Introduzione ad Architetture Orientate ai Servizi e Web Service

Processi BPEL. Obiettivi

Reti di Telecomunicazione Lezione 8

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

InterNet: rete di reti

Il Protocollo HTTP e la programmazione di estensioni Web

Interoperabilità e cooperazione applicativa tra sistemi informativi

SWIM v2 Design Document

Reti di Calcolatori. Vantaggi dell uso delle reti. Cosa è una rete? Punto di vista logico: sistema di dati ed utenti distribuito

EXPLOit Content Management Data Base per documenti SGML/XML

1 Vincenzo de Stefano SAP e Servizi Web

PARTE 11. Web Services

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

Concetti base. Impianti Informatici. Web application

Dal protocollo IP ai livelli superiori

Protocollo di metadata harvesting OAI-PMH Lavoro pratico 2

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Corso di Reti di Calcolatori LS

Basi di dati. Corso di Laurea in Ingegneria Informatica Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti

Appunti di Sistemi Distribuiti

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

SISTEMI OPERATIVI DISTRIBUITI

JNDI. Massimo Merro Programmazione di Rete 214 / 229

8. Sistemi Distribuiti e Middleware

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

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

Come leggere ed interpretare la letteratura scientifica e fornire al pubblico informazioni appropriate sui farmaci

Lezione 1 Introduzione

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Standard di comunicazione

IBM Software Demos The Front-End to SOA

Comunicazione tra Processi

Comunicazione tra Processi

Corso di Informatica Modulo T3 B2 - Database in rete

<utente> <nome>mario</nome> <cognome>rossi</cognome> <saldo>1230</saldo> </utente> Tag di chiusura dato. Tag di apertura

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

Reti di Calcolatori. Il Livello delle Applicazioni

SERVICE BROWSER. Versione 1.0

Transcript:

Università degli Studi di Bologna Master Integratori di Sistema Corso di Architetture Distribuite e Servizi di Rete Web Services Antonio Corradi & Paolo Bellavista Web Services 1 Web Services Differenza tra Servizi Web e Web Services da una parte i servizi Web si ottengono in un sistema integrato facendo computazione via Web, dall altra i Web services sono una specifica diversa e precisa per ottenere a livello Web tutto quello che si può ottenere a livello di linguaggio di programmazione e di computazione Stiamo considerando un ambito HTML-compatibile in più assumendo di usare strumenti che tengano in conto alcune estensioni come XML (extensible Markup Language) Web Services 2

MIDDLEWARE nel supporto a sistemi MIDDLEWARE E COMPONENTI: direzioni di evoluzione e stato dell'arte Fornitura di servizi in ambiente distribuito pervasivo e ubiquo Sempre più servizi intesi come sistemi o framework per la integrazione e composizione di oggetti distribuiti Con garanzia di superare eterogeneità e mantenere i corretti livelli di sicurezza Web Services 3 MIDDLEWARE ad OGGETTI MIDDLEWARE diffusi basati Modello Cliente-Servitore RPC (Remote Procedure Call) Attualmente: CORBA, DCOM Web Services 4

CORBA Interazione sincrona Ambiente standard basato su componenti multilinguaggio e multi-architettura eterogenei Integrazione di sistemi e strumenti esistenti MIDDLEWARE ad OGGETTI SKELETON ORB IIOP Applicazione Server ORB come BUS di interconnessione Applicazione Client STUB ORB IIOP Apertura verso ambienti esterni anche legacy TCP/IP TCP/IP Web Services 5 COM, DCOM, e.net Interazione sincrona Ambiente basato su componenti multilinguaggio proprietario Integrazione di sistemi e strumenti esistenti MIDDLEWARE ad OGGETTI STUB Applicazione Server Applicazione Client PROXY Apertura verso ambienti esterni anche legacy Channel RPC runtime COM Library COM Library Channel RPC runtime TCP/IP TCP/IP Web Services 6

MIDDLEWARE nel supporto a sistemi MIDDLEWARE per fornire servizi WEB in ambiente distribuito secondo la logica della massima integrazione Service Oriented Architecture (SOA) ambienti basati su interazione concordata e negoziabile Enterprise Application Integration (EAI) ambienti per integrare applicativi esistenti legacy Web Services 7 MIDDLEWARE e SICUREZZA I firewall tendono a introdurre vincoli nel passaggio di funzionalità e a bloccare richieste di operazioni insicure Fornitura di servizi WEB in ambiente distribuito deve passare anche attraverso le politiche di sicurezza di qualunque sistema (eterogeneità) e di qualunque gestione di sicurezza Web Services 8

SICUREZZA ed ETEROGENEITÀ Potere richiedere qualunque servizio da qualunque piattaforma e per qualunque tecnologia realizzativa Fornitura di servizi WEB attraverso protocolli standard Protocolli di trasporto (SOAP) Protocolli di descrizione (metalivello WSDL e di nomi UDDI) Web Services 9 Web Services come middleware MIDDLEWARE come organizzazione standard per la fruizione di servizi (Richiedente/Provider e Broker) in ambito Web-compatibile Servizi offerti dal Provider Richiesti quando e se necessario su bisogno dal Client Esposti da appositi sistemi di nomi broker definiti ad-hoc Web Services 10

Web Services come MIDDLEWARE di Integrazione (?) SOAP Web Services come protocolli (Simple Object Access Protocol) WSDL (Web Services Description Language) UDDI insieme con altre estensioni (Universal Discovery, Description and Integration) Per ottenere la possibilità di interoperare come usando la programmazione ma attraverso il Web (uso di XML) Web Services 11 Web Services: Protocolli SOAP Protocollo di comunicazione per la interazione sia C/S sia richiesta o risposta WSDL dialetto XML per la descrizione dei servizi che si possono richiedere ed ottenere UDDI Sistema di nomi per esportare ed importare le proprietà dei servizi disponibili insieme con altre estensioni Web Services 12

MIDDLEWARE infrastruttura di sistema Uso di protocolli e strumenti Web compatibili HTML considerato e usato come linguaggio di presentazione XML extensible Markup Language Linguaggio di markup aperto Basato su puro testo Con informazioni di tipo strutturale (?semantico) Derivato da SGML (Standard Generalized Markup Language ) Web Services 13 XML come linguaggio di descrizione specializzabile per settori specifici XML Definire differenti layout (compatibili con differenti dispositivi) Definizione di nuovi TAG applicativi Separazione del contenuto dalla rappresentazione Strutturazione gerarchica delle informazioni Generare la grammatica per validare dei dati XML XML - metalinguaggio Interoperabile e Orientato al Web Compatibile con SGML Integrabile con strumenti esistenti Semplicità e con opzioni semplificabili Facile da usare e con vincoli per la specifica Web Services 14

XML come linguaggio di descrizione specializzabile per settori specifici XML Interoperabile e Orientato al Web e inserito come completamento ad HTML Uso di tag per defnire entità e sottoentità <Fatture> <Nome>Antonio</Nome> <Cognome>Corradi</Cognome> <Numero>12222</Numero> <Via>Strada</Via> <Ncivico>123</Ncivico> <CAP>40121</CAP> <Citta>Bologna</Citta>... </Fatture> XML schemi di uso Web Services 15 XML e HTML XML linguaggio di descrizione di un linguaggio oggetto HTML come il linguaggio descritto XML come metalinguaggio estendibile e descrittivo HTML come linguaggio senza grosse capacità di astrazione Due ruoli separati: XML metalinguaggio (livello di presentazione OSI) opzionale HTML come parte descritta da XML I file possono essere composti da XML per dare struttura e da HTML che si adegua alla organizzazione determinata Anche separati, purché collegabili, tra di loro Web Services 16

XML schemi di uso XML e HTML insieme in un documento Web Services 17 XML schemi di uso XML per riferire la intestazione e dettagli sulle informazioni (per la parte HTML o documento oggetto) DTD Document Type Definition o XML StyleSheet per considerare gli attributi ed elementi dei dati da descrivere e potere generare la necessaria validazione Documento vero e proprio con gli elementi XML molto appoggiato dai comitati del W3C http://www.w3.org/ http://www.w3schools.com/ Web Services 18

XML Document Type Definition DTD Document Type Definition La descrizione del DTD permette l uso degli operatori per definire la struttura in modo regolare: * ripetizione di un elemento (zero, o più volte) + almeno una ripetizione (una o più)? una o nessuna ripetizioni, sequenza di elementi Oltre a molte altre possibilità di definizioni ulteriori di attributi, sempre per una identificazione più flessibile della struttura Non usando XML e senza tipi di dati Web Services 19 XML Document Type Definition DTD Document Type Definition il DTD definisce la struttura di un documento e rende agevole la interoperabilità di documenti XML (con lo stesso DTD) <?xml version="1.0"?> <!DOCTYPE Fatture [ <!ELEMENT Fatture (Cliente, Ordine*)*> <!ELEMENT Cliente (Nome, Cognome, Numero, Via, Ncivico, CAP, Citta,, Ultimo)> <!ELEMENT Nome(#PCDATA)> <!ELEMENT Cognome (#PCDATA)> <!ELEMENT Numero (#PCDATA)> <!ELEMENT Ultimo (#PCDATA)> <!ELEMENT Ordine (Numero, Prodotto, quantità,, Ultimo)> ]> Web Services 20

XML Schema Per superare problemi di DTD in caso si vogliano descrivere strutture diverse da quelle di un documento regolare La descrizione dello schema permette un riferimento a tipi che si possono anche definire e di cui si possono stabilire regole determinando anche XML Schema necessità o meno di ordine di campi usando XML e con tipi di dati Web Services 21 XML Schema <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="fatture" type= " FattureType"/> <xsd:complextype name="fatturetype"> <xsd:sequence> <xsd:element name="nome" type="xsd:string" minoccurs="0" maxoccurs="1"/> <xsd:element name="cognome" type="xsd:string" minoccurs="1" maxoccurs= 1"/> <xsd:element name="numero" type="xsd:string" minoccurs="0 maxoccurs="unbounded"/> <xsd:element name="cap" type="xsd:string" minoccurs="0" maxoccurs="1"/> <xsd:element name="citta" type="xsd:string" minoccurs="1" maxoccurs="1"/>... <xsd:element name= "Ultimo" type="xsd:string" minoccurs= 0" maxoccurs="1"/> </xsd:sequence> </xsd:complextype> </xsd:schema> XML Stylesheet Web Services 22

XML Stylesheet XSL StyleSheet (Extensible Stylesheet Language) - XSLT documenti linguaggio per trasformare XML - XPath linguaggio per definire parti di documenti XML - XSL-FO (Formatting Object) linguaggio per formattare documenti XML <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/2000/xsl/transform"> <xsl:template match="/"> <html><body> <h2>fatture</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">nome</th> <th align="left">cognome</th> </tr> </table> </body> </html> Web Services 23 </xsl:template> </xsl:stylesheet> XML e HTML XML vs. HTML elementi XML: <?xml version="1.0"?> <!DOCTYPE Contabilità SYSTEM "Fatture.dtd"> <Fatture> <Nome>Antonio</Nome> <Cognome>Corradi</Cognome> <Numero>12222</Numero> <Via>Strada</Via> <Ncivico>123</Ncivico> <CAP>40121</CAP> <Citta>Bologna</Citta>... <Ultimo_elemento>Fine</Ultimo_elemento> </Fatture> HTML: <font size="12">antonio Corradi</font> <b>via Strada 123, 40121 Bologna</b> Web Services 24

XML vs. HTML attributi XML e HTML XML: <?xml version="1.0"?> <!DOCTYPE Contabilità SYSTEM Fattura.dtd"> <Fattura> <Cliente Nome="Antonio" Cognome="Corradi" Numero="12222" Via="Strada" Ncivico="123" CAP="40121" Citta="Bologna"... Ultimo_attributo="Ultimo"/> </Fattura> Web Services 25 XML vantaggi XML permette di conferire una struttura ad informazioni che sono tipicamente non strutturate (non significato) XML si aggiunge in modo indolore ai formati HTML cui si giustappone anche per documenti esistenti XML permette di omettere le informazioni di struttura (se esistenti e note) XML permette di riferire e considerare strumenti esterni per la validazione, trattamenti, e gestione del documento XML permette di riferire con tecniche di imbustamento documenti oggetto per un facile riferimento a strutture ripetute XML si è affermato come uno standard per la apertura di Servizi Web ad un uso generalizzato Web Services 26

SOAP (SIMPLE OBJECT ACCESS PROTOCOL) Protocollo SOAP In risposta alla necessità di lavorare con protocolli Web ma a livello di progetto di componenti e operazioni Soluzione per introdurre parametri e valori nei messaggi e per l'invocazione remota di oggetti basati su tecnologie Web IPOTESI di PROGETTO - Uso di XML per serializzazione dei dati - HTTP come protocollo di trasporto Esempio <SOAP-ENV:Envelope> <SOAP-ENV:Body> <m:getlasttradeprice> <symbol>mot</symbol> </m:getlasttradeprice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Services 27 SOAP (SIMPLE OBJECT ACCESS PROTOCOL) Protocollo SOAP <SOAP-ENV:Envelope> Header <SOAP-ENV:Body> Payload <m:getlasttradeprice> <symbol>mot</symbol> </m:getlasttradeprice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Services 28

SOAP (SIMPLE OBJECT ACCESS PROTOCOL) Protocollo SOAP Envelope incapsula il contenuto del messaggio Header destinato a contenere informazioni aggiuntive Informazioni accessorie di sicurezza Body incapsula le richieste e le risposte (in genere, il messaggio da comunicare) Fault incapsula eventuali casi distinti di errore ed eccezione Web Services 29 SOAP (SIMPLE OBJECT ACCESS PROTOCOL) applicazione mittente Envelope SOAP applicazione destinazione Envelope Header...... Body <SOAP-ENV:Body <m:getlasttradeprice xmlns:m="some-uri"> <m:symbol>ibm</m:symbol> </m:getlasttradeprice> </SOAP-ENV:Body> Web Services 30

SOAP e COMPUTAZIONE: esempio Un semplice esempio: un applicazione finanziaria (client) colloquia con un servizio che fornisce in tempo reale le quotazioni di borsa Questa interazione prevede la richiesta dell ultima quotazione di una determinata azione e la risposta dal server Schema del colloquio: L applicazione cliente costruisce una richiesta in XML usando la sintassi definita da SOAP L applicazione cliente trasmette la richiesta ad un server Web usando HTTP Il server riceve ed interpreta la richiesta trasformandola in un comando che viene passato ad un applicazione sul server (ad esempio) L applicazione sul server riceve il comando e ricava dal proprio database l informazione richiesta L applicazione sul server crea una risposta, sempre in formato XML e la restituisce al server Web Il server Web la restituisce all applicazione client come risposta HTTP Web Services 31 SOAP e XML (request( request) <POST /StockQuote/HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset= utf-8 Content-Length: nnnn SOAPAction: Some-URI <SOAP-ENV:Envelope xmlns:soap-env= http://schemas.xmlsoap.org/soap/envelope/ SOAP_ENV:encodingStyle= http://schemas.xmlsoap.org/soap/encoding/> <SOAP-ENV:Body> <m:getlasttradeprice xmlns:m= Some-URI > <symbol>mot</symbol> </m: GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Services 32

SOAP e XML (response( response) <HTTP/1.1 200 OK Content-Type: text/xml; charset= utf-8 Content-Length: nnnn <SOAP-ENV:Envelope xmlns:soap-env= http://schemas.xmlsoap.org/soap/envelope/ SOAP-ENV:encodingStyle= http://schemas.xmlsoap.org/soap/encoding/ > <SOAP-ENV:Body> <m:getlasttradepriceresponse xmlns:m= Some-URI > <Pricel>34.5</Price> </m: GetLastTradePriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Services 33 SOAP e XML (errore) <HTTP/1.1 200 OK Content-Type: text/xml; charset= utf-8 Content-Length: nnnn <SOAP:Envelope XMLns:SOAP="HTTP://schemas.XMLSOAP.org/SOAP/envelope" SOAP:encodingStyle="HTTP://schemas.XMLSOAP.org/SOAP/encoding"> <SOAP:Body> <SOAP:Fault> <faultcode>client</faultcode> <faultstring>invalid Request</faultstring> </SOAP:Fault> </SOAP:Body> </SOAP:Envelope> Web Services 34

SOAP e XML SOAP come possibilità di riferire ambienti di nomi precisi Si definiscono e riferiscono almeno due namespace: L envelope di SOAP con identificatore di namespace "http://schemas.xmlsoap.org/soap/envelope/" La serializzazione di SOAP con identificatore di namespace "http://schemas.xmlsoap.org/soap/encoding/" Un messaggio SOAP non deve contenere documenti con dichiarazioni di tipo e istruzioni per processarlo Un documento XML nel prologo contiene la dichiarazione XML e del tipo di documento per identificare il documento specifico elaborato e le regole che controllano il documento completo Web Services 35 SOAP (SIMPLE OBJECT ACCESS PROTOCOL) Protocollo SOAP Con il protocollo riusciamo a lavorare come per RPC veicolate attraverso il protocollo HTTP Tendiamo quindi a mandare messaggi e ricevere risposte (inserendo informazioni come da linguaggio di programmazione) Per raggiungere la indipendenza dalle diverse realizzazioni dei servizi che stiamo richiedendo e dalla eterogeneità delle diverse architetture Usando il protocollo non ci accorgiamo di quali server stiamo richiedendo anche se ci muoviamo a livello applicativo molto alto (e con poca efficienza) Web Services 36

SOAP Protocollo per comunicare dati: - Serializzando i dati in modo specifico (indipendentemente dalla piattaforma) - Operazioni leggere, robuste e flessibili (?) - Supporto per tutte le architetture (.NET, J2EE, IBM WebSphere, Sun ONE) Web Services 37 Torniamo alla definizione iniziale Web Services Web Services Componenti software indipendenti dalla piattaforma e dall implementazione che possono essere: descritti usando un linguaggio di descrizione del servizio (WSDL) pubblicati in un registro di servizi (UDDI) scoperti mediante una politica definita e meccanismi standard di discovery (a runtime o a tempo di progetto) invocati mediante un API remota, solitamente tramite la rete (SOAP) composti con altri servizi vedi http://www.w3.org/2002/ws/ Web Services 38

Web Services: WSDL Per i WS, oltre alla comunicazione dobbiamo anche considerare la possibilità di descrivere il servizio WSDL (Web Services Description Language) Una proposta di dialetto XML per descrivere Web Services e per pubblicarli specificando esattamente il formato dei messaggi di richiesta e di risposta in modo portabile e standard WDSL si occupa di specificare: cosa un servizio può fare (richieste, risposte e parametri) dove risiede come invocarlo Web Services 39 WSDL Se si vuole usare un Web service non noto si richiede il file WSDL si analizza il documento WSDL per determinare locazione del servizio chiamate dei metodi con i parametri come accedere ai metodi si crea una richiesta SOAP si invia la richiesta SOAP al servizio e si attende la risposta La logica è quella di avere il massimo del supporto e della facilità nel procedere, fino alla completa automazione da parte di un middleware Alcune parti di WSDL sono molto simili a IDL Web Services 40

ARCHITETTURA DI WSDL 2.0 WSDL descrive i Web Services iniziando con i messaggi da scambiare tra service Requestor e Provider I messaggi sono descritti a partire da una prospettiva astratta e poi in forma più concreta (protocollo e formato) Un messaggio consiste in una collezione di elementi tipati Uno scambio di messaggi è definito operation Una collezione di operation è definita una interface (porttype v.1) Un service rappresenta l implementazione di un interface e contiene una collezione di endpoint (port v.1) Un endpoint è l implementazione concreta del servizio e include tutti i dettagli concreti necessari al verificarsi della comunicazione Un binding il legame per richiedere le operazioni concrete astratti concreti Web Services 41 WSDL 2.0 WSDL descrive le parti astratte e concrete Web Services Descriptor Types Message... Message Interface Service Interface Definition astratti Binding Service Endpoint Endpoint Service Implementation Definition concreti Web Services 42

SERVIZIO in WSDL Un documento WSDL è formato da questi elementi in corrispondenza ad una parte dell applicazione Parti astratte Message, Operation, Interface Parti concrete Type, Binding, Endpoint, Service WSDL definisce gli elementi astratti prima e poi le controparti concrete La versione astratta del servizio è generalizzabile, flessibile e facilmente estendibile Le specifiche concrete sono definite solo in ognuno degli elementi costituenti il servizio Web Services 43 Parti Astratte in WSDL messages informazione effettivamente inviata tra requestor e provider, con la possibile qualificazione del messaggio di input, output, o fault operation specifica dei nomi delle operazioni, i parametri di input e output e consiste di messaggi interface un insieme di operazioni astratte e di messaggi aventi un identificativo univoco che corrisponde al servizio stesso e che di solito si presenta in modo unico nel documento WSDL Web Services 44

Parti Concrete in WSDL type tipo di dato in un messaggio usando XML Schema (inserita per prima) binding per i dettagli dell implementazione delle operazioni contenute in un interface Specifica i protocolli concreti: trasporto e codifica dei dati (HTTP, SOAP; SMTP; FTP; ) endpoint per indicare l indirizzo di rete del servizio con cui effettuare la connessione service come una collezione di endpoint correlati Permette di raggruppare tutte le interface, in modo che sia visibile quali siano gli endpoint supportati da un determinato servizio Ad esempio, tutti gli endpoint associati ad una transazione che richiede più passi Web Services 45 Web Services: WSDL types Una prima parte del WSDL descrive i tipi necessari per le operazioni <types> <schema> <element name="tradepricerequest"> <complextype> <all> <element name="tickersymbol" type="string"/> </all> </complextype> </element> <element name="tradeprice"> <complextype> <all> <element name="price" type="float"/> </all> </complextype> </element> </schema> </types> Web Services 46

WSDL message, operation,, e interface Troviamo la descrizione dei messaggi e operazioni: <message name="getlasttradepriceinput"> <part name="body" element="xsd1:tradepricerequest"/> </message> <message name="getlasttradepriceoutput"> <part name="body" element="xsd1:tradeprice"/> </message> Ogni operazione è costituita da un messaggio di richiesta e uno di risposta raggruppate in interface <interface name="stockquoteinterface"> <operation name="getlasttradeprice"> <input message="tns:getlasttradepriceinput"/> <output message="tns:getlasttradepriceoutput"/> </operation> </interface> Web Services 47 WSDL Interface Ogni Interface prevede modalità diverse sincrone e asincrone One_way: l operazione composta da un solo messaggio in ingresso al service provider Request_response: l operazione prevede una risposta del service provider al messaggio del client Solicit_Response: l operazione prevede l attesa da parte del service provider di una risposta sollecitata con una richiesta mandata dal provider al cliente Notification: l operazione è composta da un solo messaggio in uscita al service provider Web Services 48

WSDL binding Il binding come collegamento tra un tipo di operazione (type), un nome di operazione (name) e l azione da eseguire (soapaction): <binding name="stockquotesoapbinding type="tns:stockquoteinterface"> <soap:binding> <operation name="getlasttradeprice > <soap:operation soapaction="http://lia.deis.unibo.it/soap/bin/"/> <input><soap:body use= literal /><input> <output><soap:body use= literal /></output> </operation> </binding> Si riferiscono le implementazioni concrete Web Services 49 WSDL endpoint e service L ultima parte del documento descrive il servizio e l indirizzo Web da utilizzare per accedere: <service name="stockquoteservice"> <documentation> Servizio di quotazione azioni </documentation> <endpoint name="stockquoteendpoint" binding="tns:stockquotebinding"> <soap:address location="http://www.stockquote.com"/> </endpoint> </service> Oltre a ultimi dettagli concreti Web Services 50

Universal Description Discovery & Integration Universal Description Discovery & Integration language (UDDI) Un fornitore di servizi UDDI (IBM, Microsoft, SAP, ) gestisce un registro elettronico denominato UBR (UDDI Business Registry) accessibile sia per pubblicare che per rintracciare i Web Services Necessità di sistemi di nomi per ritrovare i Web Services non noti con una suddivsione delle funzioni in: Service Type Registry informazioni sui tipi di servizio tmodel descrizioni delle tipologie dei dati Business Registry informazioni sulle aziende che le forniscono Web Services 51 Universal Description Discovery & Integration Universal Description Discovery & Integration language (UDDI) lo standard UDDI si propone di rintracciare i WS organizzandosi su tre tipi di servizi i cui nomi si ispirano al mondo telefonico e delle ricerche in quell ambito White pages: permette di trovare un servizio per nome Yellow pages: permette di trovare un servizio per categoria nell ambito di molteplici classificazioni Green Pages: fornisce informazioni tecniche aggiuntive sui servizi offerti da una determinata azienda Operazioni di base: ricerca e pubblicazione Web Services 52

Universal Description Discovery & Integration UDDI utilizzato da due classi di utenti Publisher: compagnia che offre Web Services Client: utente o compagnia che ricerca un Web service UDDI è un servizio globale condiviso tra server differenti sparsi in tutto il mondo, anche se non organizzati secondo una struttura gerarchica I diversi server condividono i dati mediante protocolli di replicazione UDDI come un DNS (Domain Name System) con la differenza che il DNS lavora a basso livello e UDDI lavora a livello alto di servizi UDDI si basa su SOAP per la trasmissione dei messaggi Web Services 53 INTEGRAZIONE PROTOCOLLI Provider Service Service Service SOAP Processor WSDL Pubblicazione SOAP Message SOAP Message Collegamento Broker SOAP Processor WSDL Network (Es. Trasporto HTTP) SOAP Message Ricerca Requester SOAP Processor UDDI Registry Application Application Application Web Services 54

Universal Description Discovery & Integration La sicurezza è un aspetto fondamentale in UDDI In UDDI, le due azioni principali (Registration e Discovery ) sono a diritti diversi Problema: un concorrente potrebbe cancellare il servizio di un altro publisher Soluzione: autenticazione dei publisher Ogni server mantiene traccia dei publisher e di cosa sia pubblicato Solo chi ha pubblicato un servizio autorizzato a modifica/cancellazione Classificazione dei Registri pubblici, privati, condivisi (semi-privati) Web Services 55 Web Services Inspection Language (WSIL) Web Services Inspection Language (WSIL) Con obiettivo simile a UDDI e complementare Informazioni sulla descrizione di un servizio che possono essere distribuite in ogni locazione usando un semplice documento in formato XML Evita una delle attuali difficoltà di UDDI Le entry in un registro UDDI non sono moderate ed un client non può essere sicuro che un servizio appartenga effettivamente al service provider che lo ha pubblicato nel registro UDDI Vantaggi principali decentralizzato, leggero senza focalizzare informazioni di business Utilizza altri meccanismi per la descrizione dei servizi come WSDL (analogamente ad UDDI) Web Services 56

Performance di Web Services Web Services 57 Valutazione ed evoluzione tecnologie Web Services Visibility CORBA Technology Trigger Peak of Inflated Expectation Trough of Disillusionment Slope of Enlightenment Plateau of Productivity Maturity Ogni tecnologia può essere descritta con un ciclo di vita Web Services 58

Architettura Web Services I protocolli di base hanno ottenuto specifiche e applicazione, ma manca ancora tutta la parte di specifica e descrizione del middleware di supporto ai diversi servizi Incapacità espressiva con cui si sono scontrati gli sviluppatori I protocolli di base SOAP WSDL UDDI da soli hanno poca capacità di estensione Web Services 59 Nuova Architettura Web Services Sono stati introdotti e specificati nuovi protocolli di contorno per ottenere la ulteriore possibilità di allargare i comportamenti che si possono descrivere Web Services 60

Altri Protocolli Web Services E la composizione di servizi? Business Process Execution Language for Web Services (BPEL4WS) Sul modello WSDL si costruisce un linguaggio di script che permette la invocazione orchestrata dei Web Services come una applicazione di Workflow Management sulla base di costrutti di sequenza: attività una di seguito all altra parallelo (AND split): attività che procedono in parallelo alternativa (OR split): più attività in alternativa (condizioni di attivazione differenziate); join (AND oppure OR): terminazione congiunta di tutte o Web Services 61 di una delle attività ORCHESTRAZIONE Livello di integrazione e di orchestrazione Publishing Modellazione dei processi Orchestration Comunicazione Web Service Web Service Web Service Integration Web Service Web Service Web Service Trasformazione & mapping Portals Mainframes Web Service Home-grown Data Integrazione Packaged Apps ERP Unix Terminal Apps Content Mgmt Web Services 62

Verso altre estensioni Integrazione di WS e modello business Web Services Business Functionality Industry Registry UDDI WSDL description Business Composition discovery Web Services Client SOAP / HTTP(S) execution Web Services Container Internet Web Services Runtime Enterprise firewall Web Services 63 CORBA e Web Services Il confronto tra tecnologie permette di collocare le funzioni proposte in analogia se affrontano gli stessi problemi CORBA stack IDL CORBA Services CORBA Stubs/Skeletons CDR binary encoding GIOP/IIOP TCP/IP Web Services stack WSDL UDDI SOAP Message XML Unicode encoding HTTP TCP/IP Web Services 64

CORBA e Web Services Aspect CORBA Web services Data model Object model SOAP message exchange model Client-Server coupling Tight Loose Location transparency Object references URL Type system IDL XML schemas static + runtime checks runtime checks only Error handling IDL exception SOAP fault messages Serialization built into the ORB can be chosen by the user Parameter passing by reference by value (no notion of objects) by value (valuetype) Transfer syntax Common Data Repr. used on the wire XML used on the wire binary format Unicode State stateful stateless Request semantics at-most-once defined by SOAP Runtime composition DII UDDI/WSDL Registry Interface Repository UDDI/WSDL Implementation repository Service discovery CORBA naming/trading service UDDI RMI registry Language support any language with an IDL binding any language Security CORBA security service HTTP/SSL, XML signature, WS-Security Firewall Traversal work in progress uses HTTP port 80 Events CORBA event service N/A Web Services 65 MIDDLEWARE:.NET e J2EE Infrastruttura.NET Componente.NET ospitato in container (transazioni, sicurezza, messaging service) Business layer Integrazione database: ADO.NET MS Host Integration Server Integrazione con altre piattaforme via tecnologie Web (SOAP, UDDI, WSDL, BizTalk e BPEL4WS) Java 2 Platform Enterprise Edition Componente J2EE ospitato in container Business layer Enterprise Java Beans, Java Connector Architecture Integrazione database: JDBC, SQL/J Integrazione con altre piattaforme via tecnologie Web (SOAP, UDDI, WSDL, ebxml e BPEL4WS) Web Services 66

Infrastruttura.NET MIDDLEWARE:.NET Tecnologie Web di integrazione Tecnologie proprietarie per accesso a database Integrazione di componenti legacy Web Services 67 Java2 Platform Enterprise Edition MIDDLEWARE J2EE Tecnologie Web di integrazione Tecnologie proprietarie per accesso a database Integrazione di componenti legacy Web Services 68

Java2 Enterprise insieme di componenti database e oltre sistemi di nomi componenti (Beans) integrazione di componenti via XML sistemi di messaggi comunicazione JSP e servlet J2EE composizione di moduli Web Services 69 J2EE insieme di livelli Java2 Enterprise Multi-tier architecture Architetture costituite da livelli multipli, ciascuno dedicato ad un problema (progetto separato e indipendente) Integrazione facile dei diversi livelli Web Services 70

Architettura basata su Java Java2 Enterprise Multi-tier Livello cliente / Livello Web / Livello componenti Livello Business della operazione finale Web Services 71 Architettura basata su Java Java2 Enterprise Multi-tier e DB Livello cliente / Livello Web / Livello componenti Livello Business Componenti ad-hoc per l accesso ai database Web Services 72

Enterprise Java Beans EJB come componenti per la gestione Enterprise Container unificato per Servlet e Beans Web Services 73 Enterprise Java Beans (EJB) EJB come componenti ospitati da un container Il container specifica e gestisce le politiche comuni Consente all applicazione di di eseguire girare sull hardware sulla Architettura sottostante sottostante Gestisce i i servizi di di sistema ed ed ospita ii componenti dell applicazione Web Services 74

Enterprise Java Beans (EJB) EJB componenti con tempo di vita gestito dal container Container come gestore a runtime delle politiche per transazioni, persistenza, sicurezza e concorrenza EJB con due interfacce standard usate rispettivamente da locale e da remoto con possibili metodi distinti HOME: metodi di create e remove (anche finder) REMOTE: metodi applicativi Enterprise e invocabili da remoto Creazione Localizzazione Distruzione Metodi di Business Web Services 75 EJB container Per facilitare la gestione a runtime delle gestore delle politiche per transazioni persistenza sicurezza Enterprise Java Beans (EJB) EJB usa Bean e strumenti e può ottenere risultati via callback Web Services 76

Tassonomia degli EJB EJB possono supportare diversi concetti e semantiche Stateless: ogni invocazione è indipendente Stateful: stato mantenuto fra invocazioni successive Sessione e Session Bean Componenti incaricati dell esecuzione di un servizio Incapsulano la business logic Oggetti non persistenti Non si può fare recovery in caso di crash (tipicamente stateless per il container) Web Services 77 EJB Persistenza ed Entity Bean Container-Managed Persistence (CMP) sincronizzazione a carico del container Bean-Managed Persistence (BMP) gestione proprietaria della sincronizzazione Entity Bean Tassonomia degli EJB - Componenti normalmente incaricati dell accesso a dati e della sincronizzazione - Oggetti persistenti Web Services 78

CONFRONTO:.NET e J2EE Infrastruttura.NET Java 2 Platform Enterprise Edition Web Services 79 CONFRONTO:.NET e J2EE Infrastruttura.NET e J2EE Argomenti comuni a entrambe le piattaforme: alta integrazione e integrabilità con servizi Web; bassi costi di sistema (jboss/linux/cobalt, Windows/Win32) soluzioni single-vendor alta scalabilità necessità di training dei programmatori Web Services 80

CONFRONTO.NET e J2EE pro.net e vs. J2EE Microsoft marketing alle spalle Buona storia passata riguardo servizi Web, ambienti di sviluppo, supporto aziendale,... Modello di programmazione più semplice (c'è modello?) Neutralità rispetto al linguaggio Interconnessione e dipendenza forte con il sistema operativo sottostante Web Services 81 CONFRONTO.NET e J2EE pro J2EE e vs..net È spinta da un intero consorzio di industrie Tecnologia stabile e assestata, non first-generation (.NET).NET non è completamente interoperabile con standard industriali correnti (biztalk ha estensioni proprietarie di SOAP) Modello di programmazione più ricco Neutralità rispetto alla piattaforma Migrazione di codice Java esistente verso l'integrazione con J2EE per servizi Web; migliore portabilità e integrazione con componenti esistenti (Java Connector Architecture) Utilizzo del linguaggio Java più indicato oggi che non quello di C# (dati Gartner: 4 milioni di sviluppatori Java oggi, 6,5 milioni entro 2006; 85% università insegnano Java, 60% lo ritengono una parte imprescindibile del curriculum) Web Services 82