Corso di Applicazioni Telematiche



Documenti analoghi
Introduzione ai Web Services Alberto Polzonetti

Corso di Applicazioni Telematiche

Service Oriented Architectures e Web Services

Web Service Architecture

Seminario di Sistemi Distribuiti RPC su SOAP

fornitore di servizi utente all interazione tra utenti e sistemi

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO

Ministero del Lavoro e delle Politiche Sociali

Java Web Services. Uso di Eclipse e Apache Axis

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

Un introduzione ai Web service

Presentazione di Cedac Software

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

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

Integration Software S.r.l.

1 Vincenzo de Stefano SAP e Servizi Web

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

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

Reti di Telecomunicazione Lezione 6

Protocolli applicativi: FTP

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

Introduzione alle griglie computazionali LEZIONE N. 10. Università degli Studi di Napoli Federico II Corso di Laurea in Informatica III Anno

Web Services Security

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

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

Introduzione alle applicazioni di rete

Interoperabilità e cooperazione applicativa tra sistemi informativi

Distributed Object Computing

Seminario di Sistemi Distribuiti: RPC su SOAP

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

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

Web services. 25/01/10 Web services

Modelli per la descrizione di protocolli

Approfondimento. Web Services

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

Socket & RMI Ingegneria del Software - San Pietro

OpenSPCoop Un Implementazione Open Source della specifica SPCoop di Cooperazione Applicativa

Framework. Impianti Informatici. Web application - tecnologie

Lo scenario: la definizione di Internet

Architetture software

Sistemi informativi secondo prospettive combinate

BPEL: Business Process Execution Language

Laboratorio di RETI DI CALCOLATORI

Analisi e sperimentazione della piattaforma Web Service Notification nell ambito del controllo del traffico aereo

Reti di Calcolatori. Il Livello delle Applicazioni

COME FARE PER. ARMONIZZARE IL SITO COL SISTEMA DI GESTIONE DOCUMENTALE DELL ENTE

Appendice D. D. Web Services

Creare client statici

Sommario. Introduzione... xvii. 1 Che cosa sono i servizi Web?... 1

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

Architetture Web Protocolli di Comunicazione

Il Web-Service SDMX dell ISTAT

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

Programmazione Web. Introduzione

B.P.S. Business Process Server ALLEGATO C10

Progetto di Applicazioni Software

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

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

Gestione Richieste Patenti Web

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Architetture Informatiche. Dal Mainframe al Personal Computer

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

DOCFINDERWEB SERVICE E CLIENT

Introduzione a Service Oriented Architecture e Web Service

Il Web Server e il protocollo HTTP

8. Sistemi Distribuiti e Middleware

PRACTICAL DEVELOPMENT OF A WEB SERVICE

INTEGRATA OTTIMIZZAZIONE DEI PROCESSI AZIENDALI

Progetto di Applicazioni Software

Architetture Informatiche. Dal Mainframe al Personal Computer

Client e Server comunicano tramite il protocollo SOAP.

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

Lezione 1 Introduzione

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

L o. Walter Ambu japs: una soluzione agile (

Le Reti Informatiche

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

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

Ingegneria del Software. Presentazione del pattern Proxy

Definizione e realizzazione di un modello architetturale per la gestione della transazionalità in processi di business distribuiti. Edoardo Di Lorenzo

Architettura client-server

SOA e Web Service SISTEMI INFORMATIVI MODULO II. Corso di Sistemi Informativi Modulo II A. A

Service Oriented Architectures (SOA)

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

JNDI. Massimo Merro Programmazione di Rete 214 / 229

JBoss ESB Un caso d'uso italiano: La Porta di Dominio per la Cooperazione Applicativa

Hardware delle reti LAN

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

Progetto SIRPE De-materializzazione delle prescrizioni. Servizi personalizzati della CIL

WebServices. Distribuire una computazione. Sistemi che usano RPC Sun RPC RPC. Il Web usato dai programmi. Vincenzo Gervasi

Griglie computazionali LEZIONE N. 14. Università degli Studi di Napoli Federico II Corso di Laurea Magistrale in Informatica I Anno

Dal protocollo IP ai livelli superiori

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

Il Protocollo HTTP e la programmazione di estensioni Web

Protocollo di metadata harvesting OAI-PMH Lavoro pratico 2

Composizione e Coreografia di Web Services

PARTE 11. Web Services

INTEGRATA OTTIMIZZAZIONE DEI PROCESSI AZIENDALI

Programmazione di Web Services

Transcript:

Service Oriented Architectures e Web Services Corso di Applicazioni Telematiche A.A. 20010-11 Prof. Simon Pietro Romano Università degli Studi di Napoli Federico II Facoltà di Ingegneria

Cos è un Web Service? L evoluzione delle tecnologie Internet ha due obiettivi principali: soddisfare i bisogni degli utenti integrare sistemi informativi eterogenei e sempre più complessi Web Service: componenti software distribuiti ed accoppiati in modo lasco forniscono un servizio ben definito servizio inteso non necessariamente come un servizio finale, ma come un componente indipendente che può essere usato per fornire un servizio finale sono accessibili da programmi mediante protocolli Internet standard

Web Services secondo il W3C Software applications identified by a URI, whose interface and bindings are capable of being identified, described and discovered by XML artifacts and supports direct interactions with other software applications using XML based messages via Internetbased protocls (W3C).

Web Service: definizioni Componenti per la programmazione web: auto-contenuti, auto-descrittivi, modulari possono essere, sempre tramite interazioni basate sul web: pubblicati localizzati invocati

Caratteristiche dei Web Service Riutilizzabili Indipendenti da: piattaforma (Unix, Windows, Mac, ) implementazione (VB, C#, Java,...) architettura sottostante (.NET, J2EE, ) Accessibili mediante un interfaccia standard auto-descrittiva Combinano opportunamente: lo sviluppo basato sui componenti gli standard web

Service Oriented Architecture (SOA) I WS si basano sulla cosiddetta Service Oriented Architecture (SOA) Tre componenti principali: 1. Service Provider rende disponibile il servizio e pubblica il contratto che ne descrive l interfaccia, tramite un apposita entità detta Broker 2. Service Requestor o Consumer invia richieste al service broker; quest ultimo cerca il servizio compatibile 3. Service Registry o Broker fornisce informazioni al consumer riguardo quale servizio utilizzare (ivi compresa la sua localizzazione)

Scenario di richiesta di un servizio Ricerca di un servizio Richiesta al registro Link verso il servizio Registro Client Descrizione Richiesta della descrizione del servizio Descrizione del servizio Invocazione del servizio Chiamate Service Risposte

WS: non così nuovi Sun RPC (Remote Procedure Call) 1985 CORBA (Common Object Resource Broker) 1992 DCE/RPC 1993 Microsoft COM 1993 Microsoft DCOM 1996 Java RMI (Remote Method Invocation) 1996

ma comunque diversi! Neutrali rispetto alla piattaforma Basati su standard aperti Interoperabili Basati sull impiego di componenti software ampiamente diffusi parser XML server HTTP

Web Services: ruoli ed interazioni Service Service Provider Service Registry Find Service User

Web Services: architettura Interazione: SOAP Dati: XML Service Provider Comunicazione: HTTP Service Broker UDDI/WSDL Find Service User

Web Services: scenario tipico di interazione Il Provider crea e definisce il servizio utilizzando il linguaggio WSDL (Web Services Description Language) Il Provider registra il servizio tramite UDDI (Universal Description Discovery and Integration) L utente trova il servizio effettuando una ricerca nel registro UDDI L applicazione utente: si collega ( binding ) al Web Service invoca le operazioni da esso definite, tramite il protocollo SOAP (Simple Object Access Protocol)

Stack di tecnologie per i web services UDDI (Universal Description, Discovery and Integration): le pagine gialle dei servizi Web WSDL (Web Services Description Language): descrizione dei messaggi SOAP (Simple Object Access Protocol): protocollo per lo scambio di messaggi XML (extensible Markup Language): formato per lo scambio dei dati Emerging layers UDDI WSDL SOAP Internet Protocols (HTTP, FTP,...)

Web Services: protocolli Web Service Consumer Find a Service http://www.uddi.org Link to discovery document Discovery http://yourservice.com HTML with link to WSDL How do we talk? (WSDL) http://yourservice.com/?wsdl return service descriptions (XML) Let me talk to you (SOAP) http://yourservice.com/svc1 return service response (XML) UDDI Web Service

Servizi di comunicazione e trasporto Strato di trasporto: XML è usato per descrivere la struttura dei messaggi scambiati tra servizi Web Il messaggio è costituito da: l identificativo il destinatario una lista di argomenti eventuali il nome dell operazione invocata una lista di valori di ritorno attesi altri parametri SOAP HTTP TCP/IP Transport

Trasporto HTTP, con il metodo POST, è il più comune ma è possibile: utilizzare HTTP, con il metodo GET adoperare altri protocolli classici FTP SMTP adoperare altri protocolli di nuova generazione: Jabber (XMPP) BEEP

SOAP Un protocollo basato su XML e tipicamente incapsulato in HTTP Costituito da: un involucro esterno per descrivere: ciò che c è in un messaggio come processare il messaggio un insieme di regole di codifica per rappresentare istanze di tipi di dati definiti a livello applicativo una convenzione per rappresentare chiamate a procedure remote, insieme alle relative risposte

Messaggio SOAP La struttura dei messaggi SOAP la busta l header Il corpo del messaggio Busta SOAP <SOAP:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> Header SOAP <SOAP:Header> <example:header xmlns:example="www.y.com"></example:header> </SOAP:Header> Corpo del messaggio SOAP <SOAP:Body> <example:body xmlns:example="www.y.com"></example:body> </SOAP:Body> </SOAP:Envelope>

Schema della comunicazione SOAP Applicazione Client XML API Client SOAP HTTP API HTTP XML API Server SOAP HTTP API Applicazione Server

Chiamata al metodo remoto CLIENT Stack a=5 b=6 SERVER Stack a=5 b=6 SOAP XML <a>5 </a> <b>6 </b> HTTP SOAP

Invio del messaggio di risposta CLIENT Stack Result=30 SERVER Stack Result = 30 SOAP XML <Result> 30 </Result> HTTP SOAP

Esempio di richiesta SOAP POST /AT-WebServicesSample2/services/DayOfWeekPort HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.4 Host: localhost:8080 Cache-Control: no-cache Pragma: no-cache SOAPAction: "getdayofweek" Content-Length: 304 <?xml version="1.0" encoding="utf-8" standalone="no"?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <date xsi:type="xsd:date">2010-04-12</date> </soapenv:body> </soapenv:envelope>

Esempio di risposta SOAP HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=utf-8 Date: Mon, 12 Apr 2010 08:56:35 GMT Connection: close <?xml version="1.0" encoding="utf-8" standalone="no"?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/ " xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <dayofweek>ok ciccio...the day is a : Monday</dayOfWeek> </soapenv:body> </soapenv:envelope>

WSDL Documento XML che contiene la descrizione dell interazione client-server Un documento WSDL completo deve dare due tipi di informazioni: Descrizione del servizio di livello applicativo (interfaccia astratta) Vocabolario Messaggi Interazioni Dettagli dipendenti dal protocollo specifico quale protocollo di comunicazione usare: es. SOAP su HTTP tipi di interazione su questo protocollo endpoint (indirizzo di rete)

WSDL: struttura Tipi: definizione dei tipi di dati del Web Service (uso di XMLSchema) Messaggio: definizione dei messaggi che fanno riferimento ai tipi Tipo di porta: insieme di operazioni (action) implementate da un Web Service una porta è un punto di terminazione identificato in maniera univoca da: un identificativo (ad es: URL) un binding Binding WSDL/SOAP: un protocollo concreto d accesso a una porta e un formato dei messaggi e dei dati per questa porta Servizio: una collezione di porte (le instanze delle porte WSDL) <wsdl:definition> <wsdl:types> </wsdl:types> <wsdl:message> <wsdl:message> </wsdl:message> </wsdl:message> <wsdl:porttype> <wsdl:porttype> </wsdl:porttype> </wsdl:porttype> <wsdl:service> <wsdl:service> <wsdl:binding> </wsdl:service> </wsdl:service> </wsdl:binding> <wsdl:service> <wsdl:service> </wsdl:service> </wsdl:service> </wsdl:definition>

WSDL in sintesi Types Message Port Type Operation Binding Definizioni tipi di dati Firme di richesta e risposta per ogni metodo ( IDL) <servizio, protocollo> operazioni metodo messaggi Specifica del Protocollo e del formato dei dati Service { Port binding } Port Indirizzo ( URL)

WSDL: un esempio

UDDI Universal Description, Discovery and Integration insieme di specifiche che definiscono un modo per pubblicare e cercare servizi attraverso una repository centralizzata Obiettivo: fornire un catalogo mondiale che permetta di ricercare i Servizi Web in base allo stesso principio delle pagine gialle Definizione delle informazioni da fornire per ciascun servizio e del tipo di codifica API di ricerca ed aggiornamento che descrivono come si può accedere alla repository ed aggiornare le informazioni La riuscita di UDDI richiede che i diversi fornitori di Servizi Web si accordino sulla definizione di criteri comuni e di determinate categorie di servizi Operatori: Microsoft, IBM, SAP e HP Problematico cfr. slide seguente!

UDDI: un registro pubblico?

UDDI: un sito di esempio ancora vivo http://www.xmethods.com/ve2/index.po

Discovery UDDI Inquiry UDDI Registry Publish

Discovery UDDI Inquiry UDDI Registry Publish

UDDI Le specifiche UDDI definiscono le tre parti costituenti il registry Pagine bianche Identità del fornitore, indirizzo fisico ed elettronico, qualificazioni che fanno riferimento a tassonomie industriali standard Pagine gialle La descrizione dei servizi offerti Pagine verdi Informazioni sui modelli di accesso al servizio e i differenti modelli di dati sottostanti

Servizi Business Si tratta generalmente di funzioni legate al commercio elettronico Riproduzione in un mondo virtuale delle transazioni commerciali del mondo reale transazioni, contratti, fatturazione, pagamenti, ecc. I servizi Web Business mettono a disposizione degli sviluppatori un insieme di specifiche che facilitano lo sviluppo di applicazioni Web per settori applicativi specifici Per quanto riguarda gli aspetti tecnici, la specifica di alcuni Servizi Business è iniziata prima delle attività di standardizzazione del W3C

Servizi Business ebxml e RosettaNet: per formalizzare un infrastruttura completa per l e-commerce BitzTalk di Microsoft: formalizzazione dello scambio elettronico dei documenti professionali (fatture, ordini, ecc.) tra applicazioni Web distribuite WSFL (Web Services Flow Language) di IBM, XLANG di Microsoft e WSCL (Web Services Conversation Language) di HP per la specifica della composizione di un applicazione Web per l esecuzione di processi business BPML (Business Process Modeling Language) e BPQL del consorzio BPMI: una parte delle specifiche copre la sincronizzazione dei processi business in diverse aziende (es: gestione delle relazioni con i clienti, logistica, ecc.) WSUI (Web Service User Interface) di Epicentric, WSXL (Web Services Experience Language) di IBM e WSIA (Web Services Interactive Applications) di OASIS: Gestione dell accesso ai servizi Web BizTalk WSFL XLANG BPML BPQL ebxml RosettaNet tpaml WSUI WSXL WSIA Servizi Business

Piattaforme di sviluppo e esercizio Web Service su piattaforma leggera Server HTTP e Parser XML Esempi: Apache SOAP, Apache Axis, SOAP::Lite (Perl), PHPSOAP (PHP), WhiteMesa SOAP (C++), SOAP for ADA, Smalltalk Web Services Web Service su Application Server Valori aggiunti: gestione dell accesso concorrente, gestione delle transazioni, sicurezza e autenticazione, infrastrutture, tool di sviluppo Classificazione dei fornitori: Basi di dati: DBMS tradizionale + infrastruttura XML per integrare l architettura UDDI/WSDL/SOAP: Oracle, IBM, Sybase Middleware: BEA, Vitia, IBM, Progress Sistemi operativi: SUN, IBM, Microsoft

Supporto Java per Web Services JAX-RPC (Java API for XML-RPC): è di fatto Java RMI (Remote Method Invocation) su SOAP fornisce un interfaccia remota per lo scambio di messaggi SOAP in stile RPC SAAJ (SOAP API with Attachments for Java): è un API che modella la struttura di un messaggio SOAP ed implementa alcune funzionalità del protocollo per la comunicazione JAXM (Java API for XML Messaging): è simile a JMS (Java Message Service) fornisce un infrastruttura di messaging per spedire e ricevere messaggi SOAP

SOAP Toolkit: API- vs Stub-based Un toolkit SOAP è un API usata per spedire e ricevere messaggi SOAP Ci sono dozzine di SOAP toolkit in molti linguaggi: Java, C e C++, C#, VB.NET, Perl, ecc. Un toolkit stub-based usa il tradizionale modello di programmazione basato su RPC: uno stub RPC per comunicare con un Web service client-side si modella un Web service come un oggetto (remoto) che espone dei metodi JAX-RPC è lo standard stub-based di EJB 2.1 Un toolkit API-based è usato per costruire messaggi SOAP (Envelope, Header, Body, ecc.) esplicitamente SAAJ è lo standard SOAP API in EJB 2.1

Modelli di programmazione JAX-RPC 1. Generated Stub 2. Dynamic Proxy 3. DII (Dynamic Invocation Interface)

Generated Stub Il toolkit JAX-RPC genera, in accordo con la descrizione WSDL: l interfaccia java RMI il relativo stub Interfaccia RMI e stub possono poi essere pubblicati in un JNDI ENC (Environment Naming Context) In questo modello lo stub è generato a deployment time

Dynamic Proxy Un dynamic proxy è usato nello stesso modo di generated stub, ma: l implementazione dello stub e l interfaccia remota sono generati dinamicamente, a run-time Come per il caso precedente, la generazione dell interfaccia remota avviene in accordo con il documento WSDL che descrive le interfacce come porte ogni porta può avere una o più operazioni Porte e operazioni sono analoghe, rispettivamente, ad interfacce e metodi Java

DII (Dynamic Invocation Interface) JAX-RPC supporta un ulteriore API, ancora più dinamica, chiamata DII (Dynamic Invocation Interface) DII permette di assemblare chiamate a metodi SOAP dinamicamente, a run time L idea è la stessa di CORBA Dynamic Invocation Interface JAX-RPC DII permette di: creare oggetti che rappresentano singole operazioni di Web Service, altrimenti modellati come metodi di un interfaccia remota invocare tali operazioni senza la necessità di accedere ad una service factory o di usare uno stub e un interfaccia remota

AXIS: Apache extensible Interaction System Un SOAP Engine open source, caratterizzato da: configurazione/deployment molto flessibili (file.wsdd ) supporto per drop-in deployment (Java Web Service, JWS) supporto per tutti i tipi base serializzazione/deserializzazione automatica di Java Bean e possibilità di definire serializer/deserializer custom RPC e message-based provider Supporto per WSDL (WSDL2Java, Java2WSDL) Trasporto: HTTP, JMS (stabili)

Domande? 44