Sei sulla pagina 1di 22

Web Service: Introduzione

Web Service
Web service : Componenti eseguibili Forniscono particolari funzioni alle applicazioni Possono esere pubblicati, individuati e invocati sul Web Basati su tecnologie Internet SOAP, XML e protocolli applicativi quali HTTP, SMTP
Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Piattaforma: Windows

MS non .net

Componente COM

RPC
Difficile che passi un Firewall

Piattaforma: qualunque

.NET
Facile passare i Firewall

Componente

SOAP su HTTP
2

1
Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Introduzione
Inquadramento Descrizione generale Applicazioni web distribuite
3

Inquadramento
Elaborazione distribuita tradizionale
Modello client/server Modello a oggetti distribuiti
Componenti: packaging e interoperabilit Remoting: remote method invocation COM, CORBA, Java RMI e EJB

MS Windows DNA
Architettura per applicazioni distribuite su Internet DHTML, COM, ASP, Message Queuing

Java 2 Enterprise Edition


DHTML, EJB, JSP, Net8
4 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Problemi
Un modello a oggetti distribuiti non adatto a grosse applicazioni
Legame stretto fra servizio e utente
Necesaria una infrastruttura omogenea Problemi di versioning

COM non supportato da piattaforme non-Windows CORBA non permette la portabilit dellimplementazione degli oggetti server EJB - Enterprise JavaBeans ...
5 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Web Service: fondamenti


Motivazione: esporre servizi ad altri processi
Internet o intranet

Black box
Basato su componenti, riutilizzabile

Basato sul Framework .NET


Modello ASP.NET Web Services

Basato su standard aperti


HTTP, XML, SOAP
6 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Web Service: fondamenti


Interconnessione di
Applicazioni Client diversi Dispositivi diversi

Distribuzione e integrazione di logica applicativa

7 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Applicazioni distribuite su web


Device, Browser
Chiamata ai servizi Accesso ad applicazioni

Servizi verticali e di portale

Applicazioni

Internet

Applicazioni Web Service

Componenti Web Service OS e servizi locali


Web Service
8 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

2
Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Architetture
Il framework .NET Modello di programmazione Configurazione
9

Il framework .NET
Framework .NET ASP.NET Web Forms Web Services Windows Forms

Framework dei servizi Base Dati Debug ...

Common Language Runtime Servizi di sistema

10 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Modello di programmazione
Codice sorgente Compilatore MSIL & Metadata

Common Language Runtime Execution Engine

Class Loader

Class Lib

JIT Compiler

Esecuzione

Managed native Code

11 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Configurazione
Concetti e architettura
file config.web (oppure web.config) Architettura gerarchica della configurazione (Influenza sul direttorio corrente e su tutti i sottodirettori)
Root Dir Sub Dir1 Sub Dir2
Web.config

12 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Configurazione
file config.web
Formato XML Il file e contenuto nello stesso direttorio dellapplicazione Configurazione di default personalizzabile
Personalizzabile il file config.web Personalizzabile la configurazione dei section handler

classe WebServicesConfiguration
Contiene le informazioni sulla configurazione sezione <webservices> in config.web
13 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Creare un Web Service


Creazione di un Web Service Infrastruttura di un Web Service Codice e sintassi Namespace Pubblicazione Discovery
14

Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Creazione di un Web Service


File .asmx
path virtuale di una ASP.NET Web application Pu essere stand-alone o parte di una soluzione esistente

infrastruttura dei Web Service


Discovery, descrizione, protocollo

Microsoft Visual Studio.NET


Microsoft Visual Basic.NET, C#, and Managed C++

15 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Web Service: infrastruttura


Request disco Discovery Return disco (XML) Request WSDL Web Service Client Descrizione Return WSDL (XML) Request .asmx Protocollo Return response (XML) Web Service

16 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Codice e sintassi
Direttiva WebService
Setting per compilatori ASP.NET <%@ WebService Language=value Class=value %>

Attributo WebMethod Sintassi del codice dichiarativo: Outline


<%@ WebService Class=MyClass.MyWebService %> <%@ WebService Language=C# Class=MathService %> using System.Web.Services; public class MathService : WebService { [ WebMethod ] ...
17 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Inline (in c#)

Esempio di file .asmx


<%@ WebService Language=C# Class=MathService %> using System; using System.Web.Services; public class MathService { [WebMethod] public int Subtract(int a, int b) { return a - b; } public int Subtract_vs(int a, int b) { return b - a; } }
18 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Creazione in Visual Studio .NET


Si lavora in una soluzoine ASP.NET Web service
[WebService(Namespace="http://advwks.msft/TempConv/", Description="A temperature conversion service.")] public class Service1 : System.Web.Services.WebService

Si aggiungono i metodi del Web service


[WebMethod] public string ReturnXYZ() { return "XYZ"; } public string ReturnABC() { return "ABC"; }
19 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Verifica di un Web in Visual Studio .NET


In Visual Studio, click Start sulla Standard toolbar Nella browser window, click sul nome del Web method che si vuole verificare Nella pagina successiva, introduci i valori dei parametri necessari al metodo e click su Invoke Si apre unaltra finestra browser che mostra il SOAP response message (XML). Qui si pu verificare che i contenuti di questo messaggio siano quelli desiderati.
20 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

10

Namespace System.Web.Services
WebService
Classe di base per i Web Services Fornisce le funzionalit di base
Es., WebService.Session

WebServiceAttribute
Classe opzionale per aggiungere informazioni addizionali

21 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Namespace System.Web.Services
WebServicesConfiguration
Contiene informazioni sulla configurazione Sezione <webservices> in config.web

WebServicesConfigurationSectionHandler WebMethodAttribute
[ WebMethod ]

Rende un metodo un Web Service method

22 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

11

Pubblicazione di un Web Service


Esposizione di Web Service e di Web Service method Si crea un Web Service proxy e un assembly
Si genera il proxy con il tool WebServiceUtil Si crea lassembly Si permette ai programmatori di sviluppare su Web Service

Si pubblica il contratto WSDL e la descrizione HTML I clienti del Web Service possono essere sia web application che browser
23 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Discovery di Web Service


File .disco
Sintassi XML, contiene I collegamenti alle risorse necessarie per trovare il WSDL Memorizzato nella root directory del server Accessibile via URL e documenti di discovery dinamica Il discovery inizia sfruttando il tool WebServiceUtil, creato automaticamente da Visual Studio.NET

Gestione globale dei Web Services con UDDI


Universal Discovery, Description, and Integration (http://www.uddi.org)
24 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

12

Come localizzare l URL di un Web Service


Nella pagina Start click su Web Services Nel tab Find a Service, click o UDDI Production Environment oppure UDDI Test Environment Nel box Search For, digita una keyword del Web service che si cerca Click Go per iniziare la ricerca Nei risultati si possono mostrare ulteriori informazioni sui Web service trovati, oppure semplicemente click Add as web reference
25 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

WebServiceUtil.exe
Crea delle classi proxy il client Input:
Contratto WSDL Linguaggio del proxy e protocollo

Output:
Un unico file sorgente nel linguaggio specificato, contenente: Proxy class Codice per linvocazione da rete e il marshalling

Esempio da riga di comendo:


webserviceutil /c:proxy /l:C# /namespace:MathServiceSpace MathService.sdl
26 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

13

Utilizzo di Web Service


Modello applicativo Invocazione di Web Service Utilizzo di Web Service Web Services Description Language (WSDL)
27

Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Modello applicativo
Sviluppatore di Web Service Sviluppatore di Web Application Web Server 1 asmx Service App .aspx

Web Server 2

Proxy

Web Form Service App

28 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

14

Aggiunta di Web Reference a un Web Service


In Solution Explorer, right-click su References poi click su Add Web Reference Nel box Add Web Reference, aggiungere linidirizzo del web service nell Address box

Click sul bottone Add Reference per aggiungere il riferimento nel progetto e creare la proxy class

29 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Invocazione di Web Service


I Web Service sono indirizzabili via URL
HTTP request

Protocolli
HTTP-GET: nome e argomenti del metodo nellURL HTTP-POST: nome e argomenti del metodo nel corpo del POST HTTP-SOAP: XML per Accedere al web service Ritornare i risultati

30 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

15

Come chiamare un metodo di un Web Service


Dopo aver aggionto il riferimento al Web service nel progetto, si possono invocare i metodi del WS esattamente come i metodi delle classi locali

com.Advwks.TempConv testwebservice = new com.advwks.TempConv(); MessageBox.Show(testwebservice.CToF(100).ToString());

31 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Invocazione: HTTP-GET e -POST


http://server/appl/service.asmx/method?param=value

HTTP-GET standard
Nome del metodo = PATHINFO Argomenti del metodo = stringa query nellURL
Query string key = nome del parametro Possibili parametri multipli Utilizzabili solo tipi di dati primitivi del.NET runtime

Il risultato in un documento XML


Qualsiasi tipo di dato .NET

HTTP-POST
Simile a GET, ma con gli argomenti nel body della form
32 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

16

Invocazione: HTTP-SOAP
Sintassi XML per web service method, parametri dei metodi, risultati Supporta tutti I tipi dati standard .NET, in pi: classi, struct, dataset Marshalling di classi e struct
Serializzazione in formato XML

33 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

WSDL
Sintassi XML che definisce:
Servizi e porte che comunicano via messaggi Binding
Specifica un protocollo o un formato dati per un messaggio o una porta Estensioni per SOAP 1.1, HTTP GET/POST e MIME

Descrizione pubblica di un Web Service e dei suoi contenuti (contratto WSDL) Elementi essenziali del WSDL
service, port e portType operazioni e messaggi
34 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

17

WSDL
Struttura degli elementi WSDL
service_1 port_C port_B message port_D port_A message port type service_2

35 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Esempio di file WSDL


<definitions name=serviceName> <import namespace=http://namespacePath location=http://path/fileName.wsdl> <portType name=portNameType> <operation name=opName> <input message=msgNameInput /> <output message=msgNameOutput /> </operation> </portType> <binding> <soap:operation soapAction=http://... /> </binding> <service name=serviceName> <port name=portName binding=bindingName> <soap:address location="http://..." /> </port> </service> </definitions>
36 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

18

5
Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

e inoltre
Gestione dello stato Sicurezza Transazioni Modello di esecuzione Applicazioni web distribuite
37

Gestione dello stato


I Web Service sono stateless Si appoggiano, ad es., sullo stato dellASP.NET
Sessione: Limitata ad una applicazione logica Contesto nel quale un utente comunica con un server Funzionalit Richiesta di identificazione e autorizzazioni Memorizzazione di dati fra richieste multiple Eventi sessione Rilascio di dati della sessione .NET State Server
38 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

19

Sicurezza
Motivi della sicurezza
Prevenire laccesso a certe arree del web server Memorizzare dati semsibili dellutente

Configurazione della sicurezza Autenticazione, autorizzazione, impersonificazione


Web Client IIS ASP.NET App .NET OS

Code Access Security


Controllo di autorizzazione per chiamate da programma
39 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Transazioni
Come ASP.NET Web Forms Servizi COM+
Transazioni automatiche Atomiche, Consistenti, Isolate, Durevoli (ACID)
SQL Server Application Web Service Message Queuing Server

COM+ transaction context

40 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

20

Transazioni
TransactionMode Property di un WebMethod Attributi:
[WebMethod(TransactionMode= TransactionMode.Required)]

Transaction Modes
Supported NotSupported Required RequiresNew

41 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Modello di esecuzione
Sincrono
Come una qualsiasi altra chiamata ad un metodo normale

Asincrono
Scompone il metodo in due blocchi di codice
BeginMethodName EndMethodName

Il runtime determina se loperazione e completata

42 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

21

Utilizzo di Web Service da una UI


Separazione completa del codice di layout e applicativo
due (o pi) file: .aspx e .cs o .vb
.aspx .cs

43 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

Esempio
.aspx
<%@ Import Namespace=MathServiceSpace %> <script language=C# runat="server"> public void Submit_Click(Object S, EventArgs E) { service.Add(operand1, operand2); ... </script> ... <input OnServerClick=Submit_Click runat="server" ...>

Il file .asmx implementa il metodo Add Il file WSDL, returnato dal runtime ASP.NET

44 Programmazione GIS - Vittorio Maniezzo - Universit di Bologna

22

Potrebbero piacerti anche