pernici barbara politecnico di milano barbara.pernici@polimi.it master universitario di ii livello...

Post on 01-May-2015

221 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Pernici BarbaraPernici BarbaraPolitecnico di Milano

barbara.pernici@polimi.ithttp://www.elet.polimi.it/people/pernici

Master Universitario di II livello in Tecnologia dell'InformazioneMaster Universitario di II livello in Tecnologia dell'Informazione

13 novembre 200313 novembre 2003

ICT ICT CCenter of enter of EExcellence xcellence FFor or RResearch, esearch, IInnovation, nnovation, EEducation, and life-long ducation, and life-long LLearningearning

Politecnico di MilanoPolitecnico di Milano

Tecnologie per e-serviceTecnologie per e-service

Web servicesWeb services

SommarioSommario

Web service Service oriented architecture SOAP UDDI WSDL

Virtual Enterprise: ScenarioVirtual Enterprise: Scenario

WFMS 1

WFMS 2

Browser

MessageQueuing

AnyCommunication

SOAP, WSDL,UDDI,...

HTTP,IIOP,...

Customer

Your Company

Supplier

ConseguenzeConseguenze

Si possono... ...dare in outsourcing „servizi“

(es. dove non si è competitivi) ...offrire „servizi“ (es. Guadagnare con funzioni e

servizi effettuate per altri) I servizi vanno da

...funzioni semplici... ...a processi di business completi, cioè funzioni

complesse

ContestoContesto

Introduzione SOC Service-Oriented Computing

Realizzare applicazioni distribuite collaborative inter aziendali

Servizi: “Component capable of performing a task”

(W3C) Qualcosa che ha dei parametri in ingresso ed in

uscita Realizzazione tramite architettura SOA

O.K., Ma come accedere ai O.K., Ma come accedere ai servizi?servizi?

I firewalls sono ostacoli per l‘accesso ai servizi

Ampia varietà di linguaggi di programmazione, paradigmi di programmazione, ambienti, ... rendono difficile l‘orchestrazione

Serve un meccanismo di invocazione generale!

Web servicesWeb services

Servizi che possono essere chiamati da altri programmi in rete

Decentralizzazione dell’elaborazione (Sun, 1990)

Def: Web Service: raccolta di funzioni packaged e pubblicate in rete per essere utilizzate da altri programmi client

i dati vengono scambiati tra le applicazioni in maniera standardizzata (testuale attraverso XML)

VantaggiVantaggi

interfacciamento a un web service di un partner:

non è necessario conoscere niente di quello che sta dal suo lato,

si devono esclusivamente chiedere a lui i parametri per connettersi a quel particolare web service

che serve senza preoccuparsi della piattaforma hardware, del linguaggio di programmazione o del pacchetto applicativo usato.

Esempio B2CEsempio B2C

Prenotazioni aeree Si vuole prenotare un viaggio con soggiorno in

albergo Situazione tradizionale

Airline.com HTTP Server

Hotel.com HTTP Server

Client

ProblemiProblemi

L’utente deve più volte interagire con i server e cercare di trovare la combinazione giusta di voli A/R e alberghi

Tempo perso Processo a volte lungo Interfacce web non standard Problemi di comunicazione

Soluzione web servicesSoluzione web services

Fornire all’utente un servizio Web Input:

Intervallo di arrivo, partenza Categoria di albergo (tipo di stanza etc. etc.)

Output Prenotazione

Booking Web server

Soluzione web servicesSoluzione web services

Al posto del HTTP server della compagnia aerea

Web Server Input

Data e luogo di partenza Data e luogo di arrivo

Output Schedule costi

Airline.com Web Server

Soluzione Web ServicesSoluzione Web Services

Al posto del HTTP server dell’hotel Web Server Input

Data di arrivo Data di partenza Tipo di stanza

Output Tipologia di stanza costi Hotel.com

Web Server

Soluzione Web ServicesSoluzione Web Services

Hotel.com HTTP Server

Airline.com Web Server

Booking Web server

Soluzione Web ServiceSoluzione Web Service

Il booking web server cerca un primo possibile schedule dialogando con il web server della compagnia aerea

In base allo schedule il web server dialoga con l’hotel per trovare la stanza

Se non esiste soluzione si cambia schedule e così via

Al client finale solo due tipi di risposta Schedule e la prenotazione Impossibile completare il servizio.

VantaggiVantaggi

L’utente vede solo i risultati finali Interoperabilità

I web server dialogano usando degli standard Automazione

La comunicazione è automatica Generalità

Il server booking può dialogare con QUALSIASI web server di compagnie aeree e hotel che realizzino l’interfaccia descritta precedentemente.

ProblematicheProblematiche

Linguaggi di descrizione delle interfacce e del comportamento di un servizio

rivolto a chi realizza e pubblica il servizio Rivolto a chi lo cerca e utilizza;

Componenti per la memorizzazione e il reperimento di servizi

Interrogabili secondo diversi criteri Linguaggi di specifica per la conversazione tra

diversi servizi Linguaggi di specifica di composizione di servizi

a valore aggiunto partendo da servizi di base Per ogni problema sono stati proposti diversi

standard

Ciclo di vitaCiclo di vita

I 4 problemi indicati precedentemente rispecchiano il seguente ciclo di vita

Service Oriented Architecture Service Oriented Architecture (SOA)(SOA)

IngredientiIngredienti

Descrizione servizi (WSDL) Archivio servizi (registry, UDDI) Meccanismi di invocazione (SOAP)

WSDLWSDL

Come definire nuovi servizi?Come definire nuovi servizi?

Riferimenti a modelli definiti da altri (= tModels) ...ma se voglio pubblicare i miei servizi

es. Semplici funzioni utili a altri o processi di business completi che offro a altri

...senza creare uno standard!

WSDL(Web Services Description Language)

Abbiamo bisogno di un linguaggio per secificare i servizie descrivere come gli altri possono collegarsi a esso!

WSDL IngredientsWSDL Ingredients

Message

OperationPort Type

Port

Binding

Service

Input & Output

Supports

Formats &Protocols

How to in

voke

How to encode

Implements

Provides

o3o3

o4o4

pt

Port Types: Graphical Port Types: Graphical RepresentationRepresentation

Request

-Response

One-Way

Notification

o1o1o1

o2o2o2o2

-Response

Solicit

Rendere disponibili i serviziRendere disponibili i servizi

Message

OperationPort Type

Input & Output

Supports

Binding

Formats &Protocols

How to in

voke

How to encode

Port Service

Implements

Provides

HowTo Do

BusinessWith Me

(WidelyAccepted)AbstractService

WhatBusiness

You Can DoWith Me

1.

2.

3.

WSDLWSDL

WSDL propone una struttura in cui: l’entità types permette di definire un tipo di dato

utilizzato nel resto della descrizione; l’entità message i messaggi trasmessi; l’entità portType definisce un servizio in termini

di operazioni (operation) messe a disposizione; l’entità port ridefinisce le operation di una

portType legandole ad una particolare tecnologia di comunicazione;

l’entità service definisce il Web Service realmente fruibile come insieme di port.

WSDL - messageWSDL - message

<message name="CalcolaICIRequest">

<part name="sup" type="float" />

<part name="tipo" type="string" />

</message>

<message name="CalcolaICIResponse">

<part name="risultato" type="float" />

</message>

WSDL portType e operationWSDL portType e operation

<portType name="pRagioneria">

<operation name="CalcolaICI">

<input message="CalcolaICIRequest" />

<output message="CalcolaICIResponse" />

</operation>

</portType>

WSDL - bindingWSDL - binding

<!-- estratto dal file WSDL del servizio Ragioneria--><binding name="RagioneriaHttpGet" type="pRagioneria"><http:binding verb="GET" /> <operation name="CalcolaICI">

<http:operation location="/CalcolaICI" /><input> <http:urlEncoded /></input><output> <mime:mimeXml part="risultato" /></output>

</operation> </binding><binding name="RagioneriaHttpPost" type="pRagioneria"><http:binding verb="POST" /> <operation name="CalcolaICI">

<http:operation location="/CalcolaICI" /><input> <mime:content type="application/x-www-

form- urlencoded" /></input><output> <mime:mimeXml part="risultato" /></output>

</operation></binding>

Rendere disponibili i serviziRendere disponibili i servizi

Message

OperationPort Type

Input & Output

Supports

Binding

Formats &Protocols

How to in

voke

How to encode

Port Service

Implements

Provides

HowTo Do

BusinessWith Me

(WidelyAccepted)AbstractService

WhatBusiness

You Can DoWith Me

1.

2.

3.

Tipi di documenti WSDLTipi di documenti WSDL

Struttura WSDLStruttura WSDL

UDDIUDDI

Repositories e registriesRepositories e registries

systems storing and managing e-Service specifications e-service providers

Alcune iniziative UDDI

UDDIUDDI

accesso alla descrizione di servizi, di tipologie di servizi e di fornitori di servizi secondo una struttura dati ben definita;

astrazione dalla tecnologia utilizzata nella realizzazione del servizio;

la ricerca di un servizio secondo differenti chiavi di ricerca (tassonomie)

Ricerca sia da utente che da programma Repository disponibile globalmente

UDDI(Universal Description, Discovery &

Integration)

How UDDI WorksHow UDDI Works

UDDI

Marketplaces, search engines, and business apps query the registry to discover services at other companies

3.

Service TypeRegistrations

SW companies, standards bodies, and programmers populate the registry withdescriptions of different types of services

1.

BusinessRegistrations

Business uses this data to facilitate easier integration with each other over the Web

4.Businesses populate the registry withdescriptions of the services they support

2.

Registry DataRegistry Data

Businesses register public informationabout themselves

WhitePages

YellowPages

GreenPages

Service TypeRegistrations

Who am I?

What do Ioffer?

How to dobusiness with me

• Standards bodies, Programmers, Businesses register information about their Service Types(„tModels“)

Standard: UDDIStandard: UDDI

metodologia di ricerca possiede una forte analogia con quella offerta dagli elenchi telefonici

Struttura del registro pagine bianche Nome azienda Descrizione testuale del servizio

Lista multi lingua del servizio Dati di contatto

Nome, numero di telefono, web site … Identificatori conosciuti

Standard: UDDIStandard: UDDI

Registro pagine gialle Categorie di Business

3 tassonomie standard nella versione 1.0 Industria: Prodotti/servizi Localizazione geografica

Coppie nome, valore per associazione con le pagine bianche

possibile eseguire ricerche basate su: l’ambito in cui si colloca il servizio; la localizzazione geografica dei fornitori; l’ambito in cui si colloca il fornitore del servizio.

Standard: UDDIStandard: UDDI

Pagine verdi Insieme di informazioni che le aziende usano per

descrivere come sia possibile fare e-commerce insieme Create sulla base delle informazioni legate alla tecnologia Possibile trovare informazioni legate alla tipologia del

servizio secondo criteri legati alla tipologia di invocazione, ai protocolli utilizzati e alle caratteristiche tecniche del servizio. Modello nidificato

Processi di business Descrizione del servizio Informazioni sulla comunicazione

I Servizi possono essere organizzati come un albero

tModeltModel

Example of a RegistrationExample of a Registration

businessEntityTB993… Frank‘s Flowershopwww.Frank-Flower.com“Flowers for the world!“contactsbusinessServicesidentifierBagcategoryBag

+49-7031-163998Boeblingen, GermanyFrank@ibm.com

Frank Leymann

businessServiceKeyNameDescriptionBindingTemplates

businessService

23T701e54683nf…Online catalog“Website where you can …BindingTemplates

BindingTemplate5E2D412E5-44EE-…http://www.flowers.de/flowerCattModelInstanceDetails

tModelInstanceInfo

4453D6FC-223C-3ED0…

http://www.rosetta.net/catalogPIP

keyedReference

DFE-2B…DUNS45231

keyedReference

EE123…NAICS02417

tModelKeys

IBM

Ariba

Microsoftother

other

Registry OperationRegistry Operation

Peer nodes (websites) Companies register

with any node Registrations replicated

on a daily basis Complete set of

“registered” recordsavailable at all nodes

Common set ofSOAP APIs supportedby all nodes

Compliance enforced bybusiness contract UDDI.org

queries

Architettura generale UDDIArchitettura generale UDDI

SOAPSOAP

SOAP: Simple Object Access SOAP: Simple Object Access ProtocolProtocol

Fornire un (Object) RPC su Internet

Interoperabilità tra un ampio numero di programi su un ampio numero di piattaforme Differenti linguaggi e paradigmi di

programmazione, e di ambienti operativi Rendere i programmi esistenti disponibili a un numero

elevato di utenti Utilizzare ove possibile la tecnologia esistente

Uso di HTTP e XML („XML as HTTP payload“) HTTP come RPC transport XML come RPC encoding scheme

Nessuna API SOAP speciale, nessun ORB SOAP

HTTP POST: Invoking CodeHTTP POST: Invoking Code

Client Server

POST /myFunctions/reverse HTTP/1.1Host: www.Frank-Leymann.comContent-Type: text/plainContent-Length: 12 

Hello, World

200 OKContent-Type: text/plainContent-Length: 12 dlroW ,olleH

RunProgram

A simpleRPC

Tunneling The FirewallTunneling The Firewall

Client

RMI

IIOP

HTTP

ApprofondimentiApprofondimenti

ExampleExample

<?xml version="1.0"?><definitions name="StockQuote" xmlns:tns=http://leymann.com/stockquote.wsdlxmlns:xsd="http://leymann.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="GetLastTradePriceRequest"> <part name="tickerSymbol" element="xsd:string"/> <part name="time" element="xsd:timeInstant"/> </message> <message name="GetLastTradePriceResponse"> <part name="result" type="xsd:float"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="GetLastTradePriceRequest"/> <output message="GetLastTradePriceResponse"/> </operation> </portType> ...

ExampleExample

<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">

<soap:binding style="rpc"

transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"><soap:operation soapAction="http://leymann.com/GetLastTradePrice"/><input><soap:body use="encoded" namespace="http://leymann.com/stockquote" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body use="encoded" namespace="http://leymann.com/stockquote" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output> ...

ExampleExample

<service name="StockQuoteService"><documentation>My first service</documentation><port name="StockQuotePort"

binding="tns:StockQuoteSoapBinding"><soap:address

location="http://leymann.com/stockquote"/></port></service>

SOAP Request/Response StructureSOAP Request/Response Structure

Object ID(Which object?)

Interface ID(Which interface?)

Method ID(Which method?)

Extension Headers(What has been forgotten

to be build into the protocol?)

Parameter(In and inout parms)

Request

Status Code(Did it work?)

Response

Extension Headers(What has been forgotten

to be build into the protocol?)

Parameter(Out and inout parms)E

nd

poi

nt

Ref

eren

ce

SOAP Endpoint ReferenceSOAP Endpoint Reference

POST /StockServer HTTP/1.1Host: 209.111.234.34Content-Type: text/xml; charset=„utf-8“Content-Length: nnnn<SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI">

... 

/StockServer/getLastTradePrice

Object Endpoint ID

80

TCP Port No

209.111.234.34

IP Host Address

A Simple SOAP RPCA Simple SOAP RPC

POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-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:GetLastTradePrice xmlns:m="Some-URI"> <tickerSymbol>DIS</ tickerSymbol > </m:GetLastTradePrice> </SOAP-ENV:Body></SOAP-ENV:Envelope>

MethodName

Input Parameter

A Simple SOAP ResponseA Simple SOAP Response

HTTP/1.1 200 OKContent-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"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>

StandardSuffix

SOAP HeaderSOAP Header

POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8„Content-Length: nnnnSOAPAction: „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:Header> <t:Transaction xmlns:t="some-URI, SOAP-ENV:mustUnderstand="1"> 5 </t:Transaction> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DEF</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body></SOAP-ENV:Envelope>

ProtocolExtensions

BibliografiaBibliografia

Conallen, Building Web Applications with UML, Addison Wesley Professional; 2nd edition (October, 2002, vers. Ital. Nov. 2003)

P. Plebani, Web service: tecnologie e piattaforme. Rapporto Fondazione Tronchetti Provera, 2002

top related