Servizi web SOAP. Papazoglou, M.P. Web Services: Principles and Technology. Pearson, 2008.

Documenti analoghi
Web Services. [Papazoglou] Papazoglou, Web Services Principles and Technology, 2008

Programmazione di servizi web SOAP

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

Introduzione ai Web Services Alberto Polzonetti

Service Oriented Architectures (SOA)

WSDL. Ing. dell Informazione Gestione dei Servizi Telematici Federica Paganelli 1

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

Introduzione a Service Oriented Architecture e Web Service

Programmazione di Web Services

Interazione fra applicazioni

Corso di Applicazioni Telematiche

RILEVAZIONE PRESENZE SPECIFICHE TECNICHE COLLOQUIO

fornitore di servizi utente all interazione tra utenti e sistemi

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO

Un introduzione ai Web service

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1

Interoperabilità e cooperazione applicativa tra sistemi informativi

Service Oriented Architecture and Web Services

INTRODUZIONE A J2EE 1.4 E AI SERVIZI WEB ENTERPRISE

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

A2A Specifiche Web Services

Servizi di interscambio dati e cooperazione applicativa Guida alla gestione dei servizi web Mipaaf

Argomenti XML JSON. Linguaggi per la definizione e lo scambio di dati strutturati, semi-strutturati, non strutturati. XML Data Model JSON

1 Vincenzo de Stefano SAP e Servizi Web

TECNOLOGIE PER I SISTEMI INFORMATIVI

Web Services Security

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

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Introduzione ai Web Services. Tito Flagella

INF-1: Specifiche Tecniche di Interfaccia

Centralizzata Monolitica anni Reti Client Server anni Internet The network is the computer

Web Services Servizio Telematico Dogane

Ministero del Lavoro e delle Politiche Sociali

Universal Description, Discovery and Integration (UDDI)

Chiamata remota di metodi

PROGETTO TESSERA SANITARIA WEB SERVICE CMS ATTIVAZIONE E REVOCA TS-CNS IN INTEROPERABILITA FRA CARD MANAGEMENT SYSTEM

Web Service. Massimo Martinelli

Introduzione ad Architetture Orientate ai Servizi e Web Service

MODELLI ISO/OSI e TCP/IP

Master Interoperabilità A.A Presentazione Lavoro Pratico 1 Interoperabilità Tecnologica (Prof. Roberto Beraldi) Maccaroni Danilo

MODELLI ISO/OSI e TCP/IP

PROGETTO TESSERA SANITARIA SERVIZI DI COMUNICAZIONE ATTIVAZIONE E REVOCA DELLE TS-CNS

Specifiche tecniche per il controllo e la trasmissione telematica delle pratiche di Comunicazione Unica

Web Service per il controllo e la trasmissione telematica delle pratiche di Comunicazione Unica

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

Laboratorio di RETI DI CALCOLATORI

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

Slide Title Web Services su Protocollo SOAP

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Composizione e Coreografia di Web Services

Integration Software S.r.l.

Internet of Things & Wireless Sensor Networks

Oggetti Distribuiti e Java RMI

Seminario di Sistemi Distribuiti RPC su SOAP

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Architetture orientate ai servizi

Progetto di Applicazioni Software

Web service. A cura di Azzurra Ragone

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

Framework. Impianti Informatici. Web application - tecnologie

ZTL Firenze Inserimento Automatico

Servizi REST. Fielding, R.T. Architectural Styles and the Design of Networkbased Software Architectures. PhD Thesis, 2000.

Approfondimento. Web Services

Università di Genova. Genova, marzo 2006

Web Services e Grid Services. OGSA e WSRF. Sommario. Page 1

Web Services e Grid Services. OGSA e WSRF

PAG. 1 DI LUGLIO 2010 PROGETTO TESSERA SANITARIA WEB SERVICES PER LA TRASMISSIONE DEI CERTIFICATI DI MALATTIA ALL INPS VER 1.

Progettazione Siti Web: Web

Appendice D. D. Web Services

PROGETTO TESSERA SANITARIA WSDL E SCHEMI XSD PER L UTILIZZO DEI SERVIZI WEB- SERVICE

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

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Introduzione. Java HTTP. G. Prencipe

Traduzione ed Interpretazione

Agenda. Architettura. Contesto. Integrazione e SOA

Tutorial di configurazione e programmazione di OpenSPCoop. Tutorial di configurazione e programmazione di OpenSPCoop

Service Oriented Architecture

Protocolli multimediali

Traduzione ed Interpretazione. Queste sconosciute

L02 - Web Service Definizione e Architettura. Ing. Federica Paganelli Gestione dei Servizi Telematici 1

Cooperazione applicativa

Web Service Architecture

Sistema WebGIS per l accesso a dati geografici eterogenei distribuiti su internet, l elaborazione GIS e la restituzione online.

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

PARTE 11. Web Services

QUALIFICAZIONE DELLA PORTA DI DOMINIO

1. Accordo di servizio Richiesta Indirizzi PEC CAD Art6 [concessionario del servizio di posta certificata al cittadino]

Integrazione di servizi: Enterprise Service Bus (ESB) e Business Process Execution Language (BPEL)

Integrazione di applicazioni

Specifiche di invocazione del sistema di monitoraggio e controllo servizi CART

7. Progetto di Applicazioni Distribuite

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

Agenda. Seminario. Cedac Software - Hardware. Cedac Software S.r.l.

SDK-CART. Versione 1.1

Indice. Introduzione PARTE PRIMA PRELUDIO: SERVIZIO CON SORRISO 1

Broker e architettura a oggetti distribuiti

Studio e realizzazione di un client per l'interoperabilità tra un archivio museale e un Data Provider OAI-PMH nell'ambito dell'architettura CART

Deployment ed invocazione dinamica di Web Services. Stefano Schivo

Broker. [POSA1] Pattern-Oriented Software Architecture, 1996

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Transcript:

Luca Cabibbo Architettura dei Sistemi Software SOAP dispensa asw520 marzo 2017 The nice thing about standards is that you have so many to choose from. Andrew S. Tanenbaum 1 - Fonti Papazoglou, M.P. Web Services: Principles and Technology. Pearson, 2008. Alonso, G., Casati, F., Kuno, H., and Machiraju, V. Web Services: Concepts, Architectures and Applications. Springer, 2004. 2

Obiettivi - Obiettivi e argomenti introdurre i servizi web (web service) SOAP, con i relativi standard Argomenti servizi web SOAP composizione di servizi web SOAP enterprise service bus discussione 3 * SOAP Un servizi web è un componente software, che ha lo scopo di implementare una funzionalità o un servizio di business di un organizzazione, che può essere scoperto e invocato dai suoi consumatori mediante un interfaccia aperta e tramite tecnologie standard del web i servizi web SOAP sono una delle principali tecnologie a servizi sono basati su un insieme completo di standard per l interoperabilità 4

SOAP Una tecnologia a servizi fondamentale è costituita dai cosiddetti servizi web SOAP web service(s) SOAP (con riferimento agli standard utilizzati) detti anche web service(s) WS-* o spesso anche solo web service(s) i servizi SOAP sono basati su numerosi standard che riguardano sia funzionalità fondamentali per l utilizzo dei web service ad es., definizione dell interfaccia, invocazione, scoperta di servizi, composizione di servizi... che altre qualità gli standard principali sono SOAP, WSDL e UDDI che sono tutti basati su XML inoltre ci sono BPEL e le (numerose) estensioni WS-* i principali responsabili degli standard per i servizi SOAP sono il consorzio OASIS (Organization for the Advancement of Structured Information Standards) e il W3C (World Wide Web Consortium) 5 Interazione tra servizi Service registry find UDDI/WSDL publish WSDL Service requestor (Service user) elemento (client o sistema o organizzazione) che invoca servizi forniti da altri execute SOAP Service provider service elemento (sistema o organizzazione) che offre servizi che possono essere usati da altri i due ruoli non sono mutuamente esclusivi: un elemento può sia offrire che invocare servizi 6

Standard di base per servizi web I servizi web SOAP (per semplicità chiamati solo WS nel seguito di questa dispensa) sono basati su un insieme di standard XML usato come sintassi comune per i WS e per i suoi standard SOAP definisce l organizzazione per lo scambio di dati e messaggi strutturati WSDL Web Services Description Language un linguaggio per la definizione dell interfaccia di WS UDDI Universal Description, Discovery and Integration standard per la ricerca di WS 7 Standard di base per servizi web Gli standard di base per WS XML, SOAP, WSDL e UDDI definiscono un infrastruttura minimale per i WS sopra a questa infrastruttura sono state definite numerose estensioni a cui ci si riferisce come WS-* per il momento ci concentriamo sugli standard di base per WS è possibile comprendere questi standard ragionando sui problemi che i WS intendono affrontare 8

-Sintassi È necessaria una sintassi comune per gli standard per i WS la sintassi scelta deve sostenere portabilità ed estendibilità in particolare, deve sostenere l indipendenza dei diversi standard per WS dalle piattaforme e dai linguaggi di programmazione La sintassi scelta è XML extensible Markup Language il vantaggio principale è la sua generalità e flessibilità lo svantaggio principale è l overhead introdotto da XML nella codifica, trasmissione, decodifica legato al fatto che le informazioni sono comunemente codificate in XML in modo prolisso 9 - Interazione con i servizi web e SOAP È necessario un meccanismo per consentire l interazione tra un servizio web e i suoi consumatori nell interazione con un servizio, ci sono tre aspetti da considerare è necessario un supporto per diverse forme specifiche di interazione ad es., nello stile procedurale (RPC) e nello stile del messaging è necessario un formato comune per i messaggi scambiati lo scambio di messaggi deve poter avvenire in modo indipendente dalla modalità di trasporto dei messaggi ovvero, deve essere compatibile con diverse modalità di trasporto ad es., HTTP, TCP, SMTP, JMS, 10

SOAP Le interazioni con/tra servizi web sono basate su SOAP in SOAP, la comunicazione è basata sullo scambio di messaggi SOAP riguarda soprattutto il formato dei messaggi SOAP è, di per sé, un protocollo stateless e one-way SOAP però supporta diverse modalità di comunicazione ad es., è possibile la comunicazione nello stile richiestarisposta, definita sulla base di coppie di messaggi SOAP è compatibile con diverse modalità di trasporto dei messaggi tuttavia, il trasporto dei messaggi non è nella portata di SOAP inizialmente un acronimo, oggi SOAP ha significato autonomo 11 Messaggi SOAP Un messaggio SOAP è costituito da una busta (envelope), che contiene un intestazione e un corpo il corpo (body) racchiude le informazioni che il messaggio vuole effettivamente trasmettere ad es., un documento, oppure il nome di un metodo invocato e i relativi parametri l intestazione (header) contiene metadati e altre informazioni non funzionali ad es., credenziali di autenticazione oppure l id della transazione SOAP envelope SOAP header header block SOAP body body block 12

Messaggi SOAP Ad es., coppia di messaggi SOAP in un interazione in stile RPC <env:envelope xmlns:soap= http://www.w3.org/2003/05/soap-envelope xmlns:m="http://www.plastics_supply.com/product-prices"> <env:header> <tx:transaction-id xmlns:t= http://www.transaction.com/transactions env:mustunderstand='1'> 512 </tx:transaction-id> </env:header> <env:body> <m:getproductprice> <product-id> 450R6OP </product-id> </m:getproductprice > </env:body> </env:envelope> SOAP envelope SOAP body Method name GetProductPrice Input parameter 1 product-id <env:envelope xmlns:soap= http://www.w3.org/2003/05/soap-envelope xmlns:m="http://www.plastics_supply.com/product-prices"> <env:header> <--! Optional context information --> </env:header> <env:body> <m:getproductpriceresponse> <product-price> 134.32 </product-price> </m:getproductpriceresponse> </env:body> </env:envelope> SOAP envelope SOAP body Method return Return value product price 13 Modelli di comunicazione Il modello di comunicazione di SOAP prevede diverse varianti, basate su due proprietà principali stile di comunicazione RPC oppure document lo stile RPC consente di definire messaggi in corrispondenza alla richiesta di esecuzione di un operazione o alla relativa risposta lo stile document (message) consente di scambiare documenti (messaggi) che contengono dati XML stile di codifica (encoding) encoded oppure literal lo stile encoded (solitamente usato con lo stile RPC) è basato su una codifica standard dei dati trasmessi, e consente, ad esempio, la serializzazione di grafi di oggetti lo stile literal (solitamente usato con lo stile document) non prevede invece nessuna codifica dei dati trasmessi 14

Interazione con SOAP service requestor service provider application object (client) application object (service provider) SOAP-based middleware SOAP messages exchanged on top of, HTTP, SMTP, or other transport SOAP-based middleware converts procedure calls to/from XML messages sent through HTTP or other protocols. 15 Osservazioni su SOAP SOAP è un wire protocol ovvero, si occupa della forma con cui sistemi o applicazioni distribuite possono scambiarsi dei dati (a livello applicativo) tuttavia, SOAP non è un transport protocol (come TCP o UDP) ovvero, non si occupa di come i dati possono essere concretamente scambiati tra sistemi o applicazioni lo scambio di messaggi SOAP avviene sulla base di altri protocolli ad es., HTTP l aspetto del binding di messaggi SOAP è considerato e descritto nel contesto di WSDL 16

Osservazioni su SOAP SOAP definisce un semplice meccanismo per codificare dati e consentirne lo scambio tra applicazioni distribuite tuttavia, non definisce nessuna semantica questo lo rende adatto a essere usato in una varietà di sistemi da RPC al messaging inoltre, SOAP non si occupa di aspetti come il routing o lo scambio affidabile di messaggi ma è adatto a contesti in cui è necessario scambiare informazioni in modo flessibile ed estensibile 17 - Descrizione di servizi e WSDL È necessario anche un meccanismo per la descrizione di servizi per descrivere l interfaccia di un servizio come avviene con l IDL di altri middleware nonché per descrivere indirizzamento (locazione del servizio) e modalità di trasporto La descrizione dei servizi web è basata su WSDL Web Services Description Language una specifica WSDL di un WS descrive che cosa fa il WS ovvero, quali operazioni fornisce come è possibile invocare il WS ovvero, il dettaglio dei formati dei dati e dei protocolli per accedere alle operazioni del servizio dove risiede il WS ad es., mediante URI (URL o URN), e la modalità di trasporto (ad es., HTTP) 18

Contenuto di un documento WSDL Un documento WSDL contiene una parte astratta descrizione dell interfaccia data type dichiarazione di un tipo di dato per i dati scambiati, ad es., per i parametri e i risultati delle operazioni message il formato di un possibile messaggio scambiato struttura del corpo di un possibile messaggio SOAP operation descrizione astratta di una singola operazione del servizio port type un tipo astratto di servizio e l insieme delle sue operazioni una parte concreta descrizione dell implementazione lega la definizione astratta del servizio con degli indirizzi di rete concreti, un protocollo specifico e delle strutture di dati specifiche in termini di uno o più binding 19 20 <wsdl:definitions name="purchaseorderservice" targetnamespace="http://supply.com/purchaseservice/wsdl" xmlns:tns="http://supply.com/ PurchaseService/wsdl" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <xsd:schema targetnamespace="http://supply.com/purchaseservice/wsdl" <xsd:complextype name="customerinfotype"> <xsd:sequence> <xsd:element name="cusnamer" type="xsd:string"/> <xsd:element name="cusaddress" type="xsd:string"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="potype"> <xsd:sequence> <xsd:element name="ponumber" type="integer"/> <xsd:element name="podate" type="string"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="invoicetype"> <xsd:all> <xsd:element name="invprice" type="float"/> <xsd:element name="invdate" type="string"/> </xsd:all> </xsd:complextype> </xsd:schema> </wsdl:types> <wsdl:message name="pomessage"> <wsdl:part name="purchaseorder" type="tns:potype"/> < wsdl:part name="customerinfo" type="tns:customerinfotype"/> </wsdl:message> <wsdl:message name="invmessage"> <wsdl:part name="invoice" type="tns:invoicetype"/> </wsdl:message> <wsdl:porttype name="purchaseorderporttype"> <wsdl:operation name="sendpurchase"> <wsdl:input message="tns:pomessage"/> <wsdl:output message="tns:invmessage"/> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> Data that is sent Data that is returned Port type with one operation Abstract data type definitions An operation with request (input) & response (output) message

<wsdl:definitions>. <import namespace="http://supply.com/purchaseservice/wsdl" location="http://supply.com PurchaseService/wsdl/PurchaseOrder-interface.wsdl"/> <!-- location of WSDL PO interface from Listing-1--> <!-- wsdl:binding states a serialisation protocol for this service --> <!-- type attribute must match name of porttype element in Listing-1--> <wsdl:binding name="purchaseordersoapbinding" type="tns:purchaseorderporttype"> <!-- leverage off soapbind:binding synchronous style --> <soapbind:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http/"/> <wsdl:operation name="sendpurchase"> Bind an abstract operation to this implementation and <!-- again bind to SOAP --> <soapbind:operation soapaction="http://supply.com/purchaseservice/wsdl SendPurchase" style="rpc"/> <!-- furthur specify that the messages in the wsdl:operation use SOAP --> <wsdl:input> map the abstract <soapbind:body use="literal" input and output messages namespace="http://supply.com/purchaseservice/wsdl"/> to these concrete messages </wsdl:input> <wsdl:output> <soapbind:body use= literal" namespace="http://supply.com/purchaseservice/wsdl"/> </wsdl:output> 21 </wsdl:operation> </wsdl:binding> Service name <wsdl:service name= PurchaseOrderService"> <wsdl:port name= PurchaseOrderPort" binding="tns:purchaseordersoapbinding"> <!-- give the binding a network endpoint address or URI of service --> <soapbind:address location="http://supply.com:8080/purchaseorderservice"/> </wsdl:port> </wsdl:service> Network address of service </wsdl:definitions> Message Exchange Pattern In WSDL, ogni operazione può avere un solo messaggio di input e/o un solo messaggio di output pertanto, ci sono solo quattro possibili pattern per lo scambio di messaggi tra servizi (Message Exchange Pattern o MEP) ciascuna operazione deve essere basata su uno di questi MEP 22

Message Exchange Pattern Request/response un operazione in cui il servizio riceve un messaggio, e poi invia una risposta al suo client è una forma di chiamata remota One way un operazione in cui il client invia un messaggio al servizio, ma il servizio non invia risposta al suo client è dunque una forma di messaging ad esempio, la sottomissione di un ordine 23 Message Exchange Pattern Notification un operazione in cui il servizio invia un messaggio a un client, senza attendere risposta è un meccanismo di notifica di eventi ai client i client interessati (subscriber) si devono registrare al servizio per ricevere notifiche relative ad eventi di un certo tipo Solicit/response un operazione in cui il servizio invia un messaggio a un client, e poi ne riceve una risposta è dunque complementare a request/response è simile alla notification (richiede la registrazione), ma prevede la risposta dei client ad esempio, il servizio invia informazioni sullo stato dell ordine di un cliente (e vuole una ricevuta) 24

Uso di WSDL e SOAP I software development kit per la programmazione di servizi web possono utilizzare WSDL e SOAP per costruire automaticamente degli oggetti proxy sia lato del servizio che lato client in modo tale che il programmatore possa codificare la richiesta di servizi come delle semplici chiamate locali, usando il linguaggio di programmazione preferito 25 Uso di WSDL e SOAP <operation name="ordergoods"> <input message = "OrderMsg"/> </operation> WSDL of service provider WSDL compiler (client side) WSDL compiler (server side) service requestor service provider application object (client) application object (service provider) stub skeleton SOAP-based middleware SOAP messages SOAP-based middleware 26

Uso di WSDL e SOAP Alcune funzionalità generazione top-down del servizio contract-first da una specifica WSDL, viene generato il codice (skeleton) dell implementazione del servizio (da completare) generazione bottom-up del servizio contract-last dall implementazione del servizio (ad esempio, un enterprise bean stateless esposto come servizio web), viene definito il servizio e generata la specifica WSDL generazione del proxy lato client da una specifica WSDL, viene generato il codice (stub) del proxy del servizio 27 - Servizio di directory e UDDI Per rendere possibile un uso diffuso dei servizi web, sono utili dei meccanismi standardizzati per pubblicare e ricercare servizi ovvero, per un servizio di registry dei servizi Un servizio di directory per i servizi web può essere basato sullo standard UDDI Universal Description, Discovery, and Integration due elementi il registry pagine bianche (indirizzi e contatti), pagine gialle (basate su classificazioni industriali), pagine verdi (con informazioni tecniche sui servizi) API per l accesso al registry 28

Directory per Web Services service requestor service provider application object (client) stub application object (service provider) skeleton SOAP-based middleware SOAP messages SOAP-based middleware SOAP messages (to look for services) SOAP messages (to publish service description) SOAP-based middleware service descriptions 29 UDDI registry Uso del servizio di directory Alcuni possibili utilizzi di un registry di servizi uso statico il registry è un repository di tutti i servizi web (ad es., di un organizzazione) condiviso tra più centri di sviluppo/utilizzo/gestione dei servizi ad es., descrive le caratteristiche fondamentali di ogni servizio, come modalità d uso, locazione, SLA, statistiche,... applicato in sede di sviluppo di un applicazione a servizi fondamentale per consentire l uso dei servizi web in più applicazioni uso dinamico usato a runtime, ad es., per supportare il brokering di servizi e consentire la selezione dinamica tra servizi 30

Servizi statici, dinamici e semantici Per utilizzare un servizio, un consumatore (client) deve determinare l interfaccia del servizio, localizzarlo e poi invocarlo nel binding (collegamento) statico, interfaccia e locazione del servizio sono determinate durante l implementazione (o il deployment) del consumatore del servizio nel binding dinamico, la locazione del servizio è determinata a runtime, con l ausilio di un service registry l accoppiamento tra produttore e consumatore è ridotto è possibile ad esempio che la locazione del servizio cambi senza impatto sul consumo del servizio c è un overhead sulle prestazioni talvolta, anche l interfaccia del servizio è determinata a runtime è però necessario che il consumatore e il fornitore del servizio abbiano un accordo predefinito sulla sintassi e la semantica delle interfacce 31 - Estensioni 32 Oltre a SOAP, WSDL e UDDI, esistono numerosi standard (oltre 100!) per WS indicati complessivamente come WS-* alcuni di questi standard sono relativi ad aspetti specifici dell interazione tra servizi web ad esempio WS-Addressing si occupa di indirizzamento dei servizi, in modo neutrale rispetto ai meccanismi di trasporto i WS sono solitamente stateless ma è possibile definire servizi stateful sulla base di WS-Resource molte estensioni sono relative alla gestione delle qualità dei servizi ad esempio sicurezza WS-Security affidabilità della comunicazione WS-ReliableMessaging transazioni WS-Coordination, WS-Transaction requisiti, capacità e preferenze WS-Policy alcune estensioni sono complementari, altre in competizione

Estensioni e profili Diversamente da quanto accade per gli standard fondamentali, le estensioni WS-* non sono accettate o sostenute allo stesso modo dai diversi produttori di software per favorire l interoperabilità, le estensioni sono state recentemente organizzate in profili ad esempio il profilo WS-I Basic I sta per Interoperability fa riferimento soprattutto a SOAP, WSDL, UDDI, XML, XML- Schema, HTTP, HTTPS e WS-Addressing il profilo Reliable-Secure-Profile estende il profilo Basic con l adozione di WS-ReliableMessaging, WS-SecureConversation, WS-MakeConnection e WS-SecurityPolicy solo alcuni profili sono accettati in modo diffuso 33 - Discussione I servizi SOAP sono una soluzione tecnologica all interoperabilità tra componenti/servizi software distribuiti ed eterogenei sulla base di alcuni standard fondamentali e numerose estensioni l uso di SOAP garantisce indipendenza e trasparenza dai protocolli sia di trasporto, che quelli relativi alle qualità, dichiarate negli header SOAP l uso di WSDL sostiene ulteriormente l indipendenza dalla piattaforma per la definizione e la fruizione dei servizi web alcuni standard sostengono diversi attributi di qualità è anche possibile la composizione di servizi (discussa tra poco) la disponibilità di strumenti di sviluppo e ambienti per l esecuzione di servizi web nasconde agli sviluppatori molta della complessità di questi standard 34

Discussione I servizi SOAP presentano anche alcuni inconvenienti la semplicità con cui è possibile esporre componenti software esistenti come servizi web può dar luogo ad un uso scorretto di questa tecnologia inoltre, è possibile che si verifichino in pratica dei problemi di interoperabilità tra un servizio e i suoi client ad esempio in caso di utilizzo di standard dello stack WS-* a cui vengono date interpretazioni diverse da implementazioni differenti se nelle interfacce viene fatto uso di tipi di dati nativi con i servizi web generati in modo bottom-up anche l uso estensivo di XML può porre problemi ad esempio di efficienza, nella traduzione da/verso strutture di dati native nelle implementazioni XML-Schema è troppo ricco, e non è supportato completamente in tutte le implementazioni 35 * Composizione di servizi web SOAP Una caratteristica fondamentale delle tecnologie a servizi è la possibilità di definire nuovi servizi come composizione di altri servizi S1 service consumer S2 S3 S4 composite service 36 nel caso dei servizi web SOAP, la composizione di servizi deve specificare come un insieme di servizi componenti possano interagire e collaborare in modo coordinato ed effettivo per dar luogo ad un nuovo servizio composto deve fornire flessibilità nella composizione anche nel caso in cui i servizi siano forniti da organizzazioni o sistemi diversi

Composizione di servizi La composizione di servizi web SOAP è basata sulla collaborazione e lo scambio di messaggi tra i servizi componenti ad esempio, la conversazione tra due servizi per gestire l approvvigionamento di prodotti 1:requestQuote customer 2:orderGoods 3:confirmOrder supplier 4:makePayment 37 Composizione di servizi La composizione di servizi web SOAP è basata sulla collaborazione e lo scambio di messaggi tra i servizi componenti una conversazione più complessa: il fornitore delega la consegna al magazzino il magazzino interagisce direttamente con il cliente per accordarsi sulla spedizione 1:requestQuote customer 2:orderGoods 4:confirmOrder supplier 5:makePayment 7:getShipmentDetail 3:checkShipAvailable 6:orderShipment 8:confirmShipment warehouse 9:confirmShipment 38

Componibilità dei servizi La componibilità dei servizi è un requisito importante dell architettura a servizi la composizione di servizi deve essere flessibile ovvero, deve essere possibile definire rapidamente un nuovo servizio come composizione di altri servizi esistenti deve anche essere possibile ri-definire un servizio come una nuova composizione di servizi ad es., per poter fruire di una diversa implementazione di un servizio inoltre, la composizione di servizi deve poter essere specificata da esperti del dominio di business e non necessariamente da programmatori per questo, la composizione di servizi va considerata più come un attività di assemblaggio di servizi che non come un attività di sviluppo 39 Composizione di servizi, in pratica 40 Ma come realizzare, in pratica, la composizione di servizi? certamente la composizione di servizi può essere definita mediante l uso di linguaggi di programmazione tradizionali ad es., Java o C# ma questa soluzione è poco flessibile e non risponde ai requisiti della componibilità una soluzione più comune (per i servizi SOAP) si basa su due tecnologie da una parte, l uso di linguaggi di programmazione specializzati per la composizione di servizi web SOAP in particolare, BPEL insieme ad un infrastruttura per la loro esecuzione dall altra, l uso di linguaggi di modellazione visuale per la modellazione di servizi che possono essere usati direttamente dagli esperti di dominio del business come BPMN e di compilatori da linguaggi visuali a linguaggi eseguibili

BPEL Business Process Execution Language (BPEL o WS-BPEL) è un linguaggio di programmazione/scripting per servizi web definisce primitive per la fruizione di servizi come invoke, receive, reply, throw e wait contiene costrutti di controllo tradizionali assegnazione, sequenza, istruzioni condizionali e ripetitive contiene anche un costrutto per l esecuzione concorrente di attività flow la sintassi è basata su XML il codice BPEL può essere eseguito da un motore BPEL ad es., eseguito da un application server che coordina l invocazione di servizi, usando il codice BPEL come uno script BPEL supporta soprattutto l orchestrazione di servizi 41 BPMN Business Process Model and Notation (BPMN) è un linguaggio visuale standard per la modellazione di processi di business (un tipo di modellazione di dominio) basato su quattro categorie principali di costrutti oggetti flusso gli elementi principali di un diagramma, per rappresentare eventi, attività e gateway (condizioni) le attività possono essere completamente automatizzate oppure possono richiedere un intervento di un utente umano oggetti connessione per collegare oggetti flusso e per descrivere le loro dipendenze corsie per descrivere chi è responsabile di svolgere le attività elaborati per descrivere i flussi di dati tra le attività un diagramma BPMN può essere compilato in BPEL 42

BPMN 43 * Enterprise Service Bus L esecuzione di un applicazione a servizi richiede la presenza di un opportuna infrastruttura runtime che implementa o gestisce gli standard di interesse tra quelli descritti l infrastruttura minimale per i servizi web può essere fornita da un application server un AS può normalmente fungere anche da contenitore di servizi web intuitivamente, però, per far interagire servizi web realizzati con tecnologie diverse (che è uno degli obiettivi fondamentali delle tecnologie a servizi!) è necessaria anche un infrastruttura che realizzi il collegamento dei diversi application server coinvolti ad es., per realizzare una federazione di application server in questo caso l infrastruttura di deployment necessaria è più complessa di solito viene chiamata un Enterprise Service Bus (ESB) 44

ESB connessione di diverse tecnologie 45 ESB connessione di servizi remoti 46

* Discussione Le tecnologia dei servizi web SOAP è una delle principali tecnologie a servizi un altra tecnologia importante è REST, che verrà descritta in una successiva dispensa i servizi web SOAP sono basati su un insieme ricco e completo di standard per l interoperabilità alcuni di questi sono accettati in modo diffuso, altri un po meno il vantaggio principale dei servizi SOAP è la loro completezza (soprattutto nel supporto alle qualità e alla composizione) il loro svantaggio principale è la pesantezza come vedremo meglio (in una successiva dispensa), il vantaggio principale dei servizi REST è la loro semplicità il loro svantaggio principale è la mancanza di supporto per alcune qualità 47