Corso di Applicazioni Telematiche -...
Transcript of Corso di Applicazioni Telematiche -...
������� ������������� ����
������������
Corso di Applicazioni TelematicheA.A. 2008-09 – Lezione n.19
Prof. Roberto Canonico
Università degli Studi di Napoli Federico II Facoltà di Ingegneria
�������� ���
� Programming with distributed components on the Web:� Heterogeneous� Distributed� Multi-language
� Le evoluzioni delle tecnologie Internet hanno due obiettivi principali:
� soddisfare i bisogni degli utenti� integrare tra loro sistemi informativi tra loro eterogenei e
sempre più complessi� Web Service:
� Componenti software distribuiti ed accoppiati in modo lasco, che forniscono un servizio ben definito e sono accessibili da programmi mediante protocolli Internet standard
� Servizio inteso non necessariamente come un servizio finale ma come un componente indipendente che può essere usato per fornire un servizio finale
������ ��������������
��������������� �������
� Component for Web Programming� Self-contained, self-describing, modular
component that can be published, located, and invoked across the Web
���������������������������
� Riutilizzabili� Indipendenti da:
� piattaforma (Unix, Windows)� implementazione (VB, C#, Java…)� architettura sottostante (.NET, J2EE,…)
� Accessibili mediante un’interfaccia standard self-describing
� Combinano gli aspetti migliori dello sviluppo basato sulle componenti e gli standard web
!��� ��������� ������������
� Loose Coupling ( accoppiamento indipendente ) : ciascun servizio esiste indipendentemente dagli altri servizi che costituiscono l’applicazione. Questo permette alle singole parti di un’applicazione di essere modificate senza toccare le aree non interessate.
� Utilizza architetture orientate ai servizi: i processi business che costituiscono un’applicazione sono separati in componenti indipendenti detti servizi. Questi servizi, interagendo con processi e macchine,riescono a creare una soluzione per i business problem. Le architetture SOA garantiscono una grande flessibilità perché è possibile modificare dinamicamente una parte di esse senza ridefinire l’intero sistema.
� Facilita l’integrazione: l’integrazione tra business partners o ambienti diversi è garantita dall’utilizzo di formati standard per lo scambio dei msg. Tali standard sono, inoltre, comprensibili all’uomo e disponibili pubblicamente, e permetteno ad uno sviluppatore di vedere esattamente cosa sta accadendo nel sistema.
� Facilmente accessibile: WS utilizzano il protocollo di trasporto già esistente e notevolmente utilizzato come http, facendo leva su infrastrutture esistenti e permettendo alle info di essere richieste e ricevute in tempo reale.
�����"���
I WS si basano sulla Service Oriented Architecture(SOA). I tre componenti prncipali sono:
1. Service Provider ,rende disponibile il servizio e pubblica il contratto che ne descrive l’interfaccia(tramite il broker).
2. Service Requestor o Consumer,effettua le queriesal service broker e questo cerca il servizio compatibile.
3. Service Registry o Broker,da info al consumer su quale servizio utilizzare e dove trovarlo.
���������������������� ����������
Ricerca di un servizio
ClientClient
ServiceService
RegistroRegistroRichiesta al registro
Link verso il servizio
DescrizioneRichiesta della descrizione del servizio
Descrizione del servizio
Invocazione del servizio
Chiamate
Risposte
#������$�%�
� Sun RPC (1985)� CORBA (1992)� DCE / RPC (1993)� Microsoft COM (1993)� Microsoft DCOM (1996)� Java RMI (1996)
#�������� �����
� Platform neutral� Open Standards
� Interoperable
� Based on ubiquitous software� XML Parsers� HTTP Server
���� ��������������������������
EJBDCOMCORBA
WebServices
ProtocolloProtocollo Internet Rete privata
Definizione dell’interfacciaDefinizione dell’interfacciaProprietario Standard
Funzionalità d’accessoFunzionalità d’accessoPrivato, statici Pubblici, dinamiche
FormatoFormatoProprietario, binario Standard, text
������������������� ��
ServiceBroker
ServiceUser
ServiceProvider
UDDI/WSDLFind
Publ
ish
UDDI
Bind
SOAP
Communication: HTTP
Data: XML
Interactions: SOAP
��������������������
� Provider builds and defines the service in WSDL
� Provider registers the service in UDDI� User finds the service by searching UDDI
registry� User application binds to the Web service
and invokes its operations via SOAP
'()�����������������
ClientClient
Web ServiceWeb ServiceWeb ServiceWeb Service
� Un Servizio Web utilizza in modo sistematico XML con i namespacee la specifica XML Schema
� Descrizione dei meccanismi di trasporto� Le richieste� I risultati� Gli errori
� Svantaggi� Complessità del documento XML e il costo del suo trattamento� Tempo di elaborazione per il trattamento dei dati XML� XML Parser
XML
������ �����������������������
� 3 classi di servizi� I servizi di comunicazione e di trasporto (SOAP)� I servizi di base: per l’indicizzazione e ricerca dei servizi
(UDDI; WDSL)� I servizi business: servizi specifici per certi settori d’attività
(ebXML, Biztalk, …)
Servizi BusinessServizi BusinessWeb Services
B2B, B2C
Web ServicesB2B, B2C
ApplicazioniB2B, B2C
ApplicazioniB2B, B2C
Servizi di baseServizi di base
Comunicazione e trasporto InternetComunicazione e trasporto InternetTCP / IP - HTTP
���*������������������%�����������
�������������� ������ �����������������
�� ���� ���������� ��� ������������������
������������������ ������ ��� ���������������������������� �
����������� ����� ���������� ��������� ���������������������������� �
!"����� ������ ��!�������������#���� ��������������������� ��
Internet Protocols(Http, Ftp...)
SOAPWDSL
UDDIEmerging layers
DiscoveryDiscovery
Let me talk to you (SOAP)Let me talk to you (SOAP)
�������������+�������
How do we talk? (WSDL)How do we talk? (WSDL)��������
� �� � � �� �� � � �
������
� �� � � ��� �� � � ��
� � � � �� � � � � ��
� � � �� � � �
Find a ServiceFind a Service
return service response (XML)return service response (XML)
http://yourservice.com/svc1
return service descriptions (XML)return service descriptions (XML)
http://yourservice.com/?WSDL
HTML with link to WSDLHTML with link to WSDL
http://yourservice.com
http://www.uddi.org
Link to discovery documentLink to discovery document
#� ���� � ����������
� Directoriescentral location to locate Web Services provided by other organizations (e.g. UDDI registry)
� Discoverylocating WSDL for a particular Web Service
� Descriptiondefines what interactions the Web Service supports
� Wire Formatsenable universal communication (e.g. SOAP)
������������� �������������������
� 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
SOAPSOAP
HTTPHTTP
TCP/IPTCP/IP
Transport
,�������
� HTTP POST is most common� But other protocols such as
� FTP� SMTP� HTTP GET
� And other exotic ones:� Jabber� BEEP
���+
Wire-protocol based on XML and HTTP that consists of:� an envelope for describing what is in a message
and how to process it� a set of encoding rules for expressing instances
of application-defined data types� a convention for representing remote procedure
calls and responses
���+
� Protocollo leggero di scambio dei dati e strutture di dati tra i nodi della rete
� nato con l’obiettivo di creare un meccanismo di RPC in ambiente distribuito, in modo trasparente al sistema operativo o linguaggio di programmazione
� Il payload di un messaggio SOAP è in formato XML� SOAP lavora su protocolli applicativi esistenti (ad es.
HTTP e SMTP)
���+
� La specifica SOAP definisce� La busta SOAP (struttura del messaggio)� Le regole di codifica dei tipi di dati (come rappresentare un
intero, una tabella, un grafo, ecc.)� Le convenzioni per la rappresentazione della chiamate a
procedure remote e per l’invio dei risultati o di messaggi d’errore.
� Le regole per il trasporto dei messaggi SOAP sul protocollo HTTP
� Gli URL per l’indirizzamento ed il routing� Dialogo tra mittente e destinatario
(������������+
� La struttura dei messaggi SOAP� La busta SOAP� L’header SOAP� Corpo del messaggio SOAPBusta SOAP <SOAP:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
</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>
��������������� �������������+
Applicazione Client
Client SOAP
XML API HTTP API
HTTP
Server SOAP
XML API HTTP API
Applicazione Server
���������������������
CLIENT
Stack
a=5
b=6
SOAP
SERVER
Stack
a=5
b=6
SOAP
HTTP
XML
<a>5 </a>
<b>6 </b>
#���������������������������
CLIENT
Stack
Result=30
SOAP
SERVER
Stack
Result = 30
SOAP
HTTP
XML
<Result>30</Result>
����������+���- ��POST /CurrencyServer/CurrencyExchange.jws HTTP/1.1Host: theseusContent-Type: text/xml; charset=utf-8Content-Length: lengthSOAPAction: http://ws.x.com/webservices/Euro
<?xml version="1.0" encoding="utf-8"?><soap:Envelopexmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:soap=http://schemas.xmlsoap.org/soap/envelope>
<soap:Body><Euro xmlns=http://ws.x.com/webservices><currency>string</currency>
</Euro></soap:Body>
</soap:Envelope>
����������+�����"
HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length<?xml version="1.0" encoding="utf-8"?>
<soap:Envelopexmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:soap=http://schemas.xmlsoap.org/soap/envelope>
<soap:Body><EuroResponse xmlns=http://ws.x.com/webservices><EuroResult>double</EuroResult>
</EuroResponse></soap:Body>
</soap:Envelope>
��������������� Gestiscono gli scambi tra servizi ed
applicazioni� XML è usato per:
� Descrivere ed identificare i servizi� Rendere sicuro ed autenticare l’accesso ai
servizi� Esprimere le relazioni tra i servizi� Classificare e ricercare i servizi negli annuari
� Gli standard:� WSDL(Web Service Description Language)
per definire un servizio Web� UDDI (Universal Description, Discovery and
Integration) per creare ed interrogare dei registri
� DSML (Directory Process ModellingLanguage) per creare dei registri di risorse interne all’impresa in XML (compatibile con LDAP)
WSDLWSDL
� UDDI� UDDI
DS
ML
DS
ML
Servizi di base
���)
� SOAP offre un servizio di comunicazione� WSDL: documento XML che contiene la descrizione
dell’interazione client-server� Un documento WSDL completo deve dare due tipi di
informazioni:� Application-level service description (abstract interface)
� vocabolario� messaggio� interazioni
� Dettagli dipendenti dal protocollo specifico � quale protocollo di comunicazione usare (ad es. SOAP su
HTTP)� tipi di interazione su questo protocollo� endpoint (indirizzo di rete)
���)<wsdl:definition>
</wsdl:definition>
<wsdl:Service>…</wsdl:Service>
<wsdl:Service>…</wsdl:Service>
<wsdl:Service>…</wsdl:Service>
<wsdl:Types>…</wsdl:Types>
<wsdl:Message>…</wsdl:Message>
<wsdl:PortType>…</wsdl:PortType>
<wsdl:Service>…</wsdl:Service>
<wsdl:Message>…</wsdl:Message>
<wsdl:Message>…</wsdl:Message>
<wsdl:PortType>…</wsdl:PortType>
<wsdl:PortType>…</wsdl:PortType>
<wsdl:Service>…</wsdl:Service>
<wsdl:Binding>…</wsdl:Binding>
� WSDL (Web ServiceDescription Language) definisce le seguenti entità� 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 Serviceche fanno riferimento ai messaggi. Una porta è un punto di terminazione identificato in maniera unica da un’identificativo (e.g. URL) e 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)
���)��� � ��
Address (� URL)Port
{ Port � binding }Service
Protocol and data-format specification
Binding
method � messagesOperation
<service, protocol> � operationsPort Type
Signature of request and reply for each method (� IDL)
Message
Data type definitionsTypes
,"���
<types><schema targetNamespace=" IMessageService.xsd" xmlns="…/XMLSchema" xmlns:SOAPENC="…/soap/encoding/"/></types>
(�������
<message name=“purchase">
<part name=“item" type="xsd:string"/>
<part name=“quantity" type="xsd:integer"/>
</message>
���������
<operation name="setMessage">
<input name="setMessageRequest“message="tns:setMessageRequest"/>
<output name="setMessageResponse“message="tns:setMessageResponse"/>
</operation>
�������
<soap:operation soapAction="" style="rpc"/>
<input name="setMessage0Request">
<soap:body use="encoded" namespace="MessageService" encodingStyle="…/soap/encoding/"/>
</input>
������
<service name="MessageService">
<port name="MessageServicePort" binding="tns:MessageServiceBinding">
<soap:address location="http://localhost:8080/setMessage/"/>
</port>
</service>
���)��/�����<message name="RateSoapIn"><part name="parameters" element="s0:Rate" /></message><message name="RateSoapOut"><part name="parameters" element="s0:RateResponse" /></message><message name="EuroSoapIn"><part name="parameters" element="s0:Euro" /></message><message name="EuroSoapOut"><part name="parameters" element="s0:EuroResponse" /></message><message name="RateHttpGetIn"><part name="from" type="s:string" /> <part name="to" type="s:string" /></message><message name="RateHttpGetOut"><part name="Body" element="s0:double" /></message><message name="EuroHttpGetIn"><part name="currency" type="s:string" /></message><message name="EuroHttpGetOut"><part name="Body" element="s0:double" /></message><message name="RateHttpPostIn"><part name="from" type="s:string" /> <part name="to" type="s:string" /></message><message name="RateHttpPostOut"><part name="Body" element="s0:double" /></message><message name="EuroHttpPostIn"><part name="currency" type="s:string" /></message><message name="EuroHttpPostOut"><part name="Body" element="s0:double" /></message>...
0��#� UDDI (Universal Description, Discovery and Integration):
insieme di specifiche che definiscono un modo di pubblicare e cercare servizi attraverso una repository centralizzata di servizi
� L’obiettivo è fornire un elenco mondiale di servizi che permetta di ricercare i Servizi Web sullo stesso principio dellepagine gialle� Definizione delle informazioni da fornire per ciascun servizio e
tipo di codifica� query e update API che descrivono come si può accedere e
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 et HP� Problematico
0��#
Pagine bianchePagine bianche
Pagine giallePagine gialle
Pagine verdiPagine verdi
Identità del fornitore, indirizzo fisico ed elettronico, qualificazioni che fanno riferimento a tassonomie industriali standard (e.g. DUNS)
La descrizione dei servizi offerti
Informazioni sui modelli di accesso al servizio e i differenti modelli di dati sottostanti
Le specifiche UDDI definiscono le tre parti costituenti il registry
��������". 0��#
� Tipo di servizio: si definisce il servizio e si assegna a questo un identificatore unico chiamato tModel. Un tModel punta a una specifica che definisce una risorsa. Oltre al servizio si definisce un’interfaccia astratta.
Pagine bianche
� Service providers registra i businesses e tutti i servizi che offrono. Tramite il costrutto Template fornisce info sul binding e sul punto di accesso.
Pagine verdi
� Categorizzazione: si usa una varietà di categorie per classificare le entità in base alla localizzazione geografica, al codice prodotto ecc.
Pagine gialle
��������". 0��#
� Ricerca. I service consumer possono ricercare il servizio effettuando queries al registro Uddi, questa ricerca può avvenire tramite tipo di servizio o service provides. Nel caso di una intranet,il broker può cercare prima i service provider interni e poi altri broker su Internet se tali servizi non esistono localmente.
� Binding : il collegamento tra client e servizio può avvenire sia in fase di compilazione che di runtime.
Statico: La ricerca di un service viene effettuata una volta sola e se ne memorizza il risultato. Quindi la localizzazione dei servizi
si conosce prima di iniziare l’esecuzione del programma e si tratta di indirizzi assoluti.
Dinamico: la ricerca viene effettuata in fase di runtime e di solito perché è stata modificata la posizione del servizio.
� Scoperta dinamica. Siccome Uddi è esso stesso un WS, un’applicazione può fare richieste al servizio, trovare dinamicamente il servizio, localizzare il suo punto di accesso, recuperare il Wsdl e collegarsi ad esso tutto in runtime.
��������! ������
� 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 sviluppodi 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
��������! ��������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 ServicesConversation Language) di HP per la specificazione 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 (ex: gestione delle relazioni con i clienti, logistica, …)
�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
WSFL – XLANGBPMLBPQL
WSFL – XLANGBPMLBPQL
ebXMLRosettaNet
tpaML
ebXMLRosettaNet
tpaML
Servizi Business
� BizTalk� BizTalk
WSUIWSXLWSIA
WSUIWSXLWSIA
+��� ����������� ���������������
� 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
+��� ����������� ���������������
JDBCJDBC
JSP / ServletJSP / Servlet
EJ BEJ B
SwingSwing
Core A
PIs
Core A
PIs
JCAJCA
JVM
JVM
JMX
JMX
BrowserBrowser
ADO.NETADO.NET
ASP.NETWebforms
ASP.NETWebforms
Enterpriseservices+CBOs
Enterpriseservices+CBOs
WinformsWinforms
BC
LB
CL
SQLserver
SQLserver
Hostint. server
Hostint. server
CLR
CLR
W M
IW
M I
Packages &Legacy apps
Packages &Legacy apps
BrowserBrowser
RDBMSRDBMS Packages &Legacy apps
Packages &Legacy apps
MTS
/DTC
MTS
/DTC
JTSJTS
JMS
JMS
MS
MQ
MS
MQ
Processing
Processing
Presentation
Presentation
Sun J2EE Microsoft .NET
(�������+�����
� Security� Single Sign-on, credentials
� Transactions� Quality of service
� Timeliness guarantees
� Asynchronous operations� Co-ordination, workflow
����� �����
� Web Service� Nuova forma di componenti logici sul piano tecnico e di
economia di sviluppo. Si tratta di un’unità funzionale con interfaccia pubblica e implementazione privata. Meccanismi di assemblaggio di applicazioni sulla base delle interfaccie dei servizi.
� Caratteristiche di base: apertura, specifica basata su strati, meccanismi di estensione, riuso, autodescrizione, ricerca e classificazione dei servizi
� Soap è uno standard stabile, WSDL e UDDI sono stati specificati, ma non ancora stabili
� Gli altri standard sono in via di definizione