ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

38
ASP .NET & Web ASP .NET & Web Service: Service: Introduzione Introduzione Andrea Saltarello Andrea Saltarello Microsoft .NET MVP Microsoft .NET MVP UGIdotNET – http://www.ugidotnet.org UGIdotNET – http://www.ugidotnet.org

Transcript of ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

Page 1: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

ASP .NET & Web ASP .NET & Web Service: IntroduzioneService: Introduzione

Andrea SaltarelloAndrea SaltarelloMicrosoft .NET MVPMicrosoft .NET MVPUGIdotNET – http://www.ugidotnet.orgUGIdotNET – http://www.ugidotnet.org

Page 2: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

2

PrerequisitiPrerequisiti

Abbiamo bisogno di:Abbiamo bisogno di:

Il framework .NET Il framework .NET (v1.x) (v1.x)

Un ambiente di sviluppoUn ambiente di sviluppoVisual Studio .NETVisual Studio .NET

Microsoft Web MatrixMicrosoft Web Matrix

Notepad (?)Notepad (?)

Un web server ASP .NET enabledUn web server ASP .NET enabledIIS5+IIS5+

Cassini (è il web server di Web Matrix)Cassini (è il web server di Web Matrix)

Page 3: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

3

Funzionalità dei Web ServicesFunzionalità dei Web Services

Programmable logic accessible by standard Web protocolsProgrammable logic accessible by standard Web protocolsPermettono alle applicazioni di inviare e ricevere informazioni tramite InternetPermettono alle applicazioni di inviare e ricevere informazioni tramite Internet

Indipendenti da linguaggi, protocolli e piattaformeIndipendenti da linguaggi, protocolli e piattaforme

Architettura statelessArchitettura stateless

Possono funzionare in modo asincronoPossono funzionare in modo asincrono

Basati su standard W3c in evoluzioneBasati su standard W3c in evoluzione

Page 4: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

4

ASP .NET e i Web ServicesASP .NET e i Web Services

Il Il motoremotore dei Web Service nel mondo .NET è dei Web Service nel mondo .NET è ASP .NETASP .NET

I Web Service sono contenuti da applicazioni web I Web Service sono contenuti da applicazioni web “normali”“normali”

Web Form e Web Service possono coesistere nella Web Form e Web Service possono coesistere nella stessa applicazionestessa applicazione

SessionSession, , ApplicationApplication & C.& C. vengono condivise vengono condivise

Page 5: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

5

Creare un XML Web ServiceCreare un XML Web Service

1.1. Creare/aggiungere un nuovo XML Creare/aggiungere un nuovo XML Web Service mediante Visual Web Service mediante Visual Studio .NETStudio .NET

2.2. Definire le funzioni Definire le funzioni WebMethodWebMethod

3.3. Compilare il progetto webCompilare il progetto web

4.4. Effettuare un test mediante browserEffettuare un test mediante browser

1111

2222

3333

4444

Page 6: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

6

Aggiungere il WS a VS Aggiungere il WS a VS

Page 7: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

7

Aggiungere il WS a VS Aggiungere il WS a VS

Page 8: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

8

Struttura di un Web ServiceStruttura di un Web Service

Visual Studio .NET crea 2 file:Visual Studio .NET crea 2 file:

File File .asmx.asmx

File File .cs .cs (o(o .vb .vb))

Page 9: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

9

Struttura di un Web ServiceStruttura di un Web Service

Il file ASMX:Il file ASMX:

Permette al web server di “girare” la Permette al web server di “girare” la richiesta http a ASP .NETrichiesta http a ASP .NET

Contiene la direttiva Contiene la direttiva WebServiceWebService

<%@ WebService Language="vb" <%@ WebService Language="vb" Codebehind=“Math.asmx.vb" Class=“MyWebCast.Math" %>Codebehind=“Math.asmx.vb" Class=“MyWebCast.Math" %>

<%@ WebService Language="vb" <%@ WebService Language="vb" Codebehind=“Math.asmx.vb" Class=“MyWebCast.Math" %>Codebehind=“Math.asmx.vb" Class=“MyWebCast.Math" %>

<%@ WebService Language=“cs" <%@ WebService Language=“cs" Codebehind=“Math.asmx.cs" Class="MyWebCast.Math" %>Codebehind=“Math.asmx.cs" Class="MyWebCast.Math" %>

<%@ WebService Language=“cs" <%@ WebService Language=“cs" Codebehind=“Math.asmx.cs" Class="MyWebCast.Math" %>Codebehind=“Math.asmx.cs" Class="MyWebCast.Math" %>

Page 10: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

10

Struttura di un Web ServiceStruttura di un Web Service

Class Class Service1Service1 <WebMethod()> Public Function <WebMethod()> Public Function function1function1() As type() As type

‘ ‘corpo della funzionecorpo della funzione End FunctionEnd FunctionEnd ClassEnd Class

Class Class Service1Service1 <WebMethod()> Public Function <WebMethod()> Public Function function1function1() As type() As type

‘ ‘corpo della funzionecorpo della funzione End FunctionEnd FunctionEnd ClassEnd Class

Il file Il file .cs.cs (o (o .vb.vb):):

Contiene la classe che implementa il Web Contiene la classe che implementa il Web ServiceService

class class Service1Service1{{ [WebMethod()][WebMethod()] public public typetype function1function1()() {{

//corpo della funzione//corpo della funzione }}}}

class class Service1Service1{{ [WebMethod()][WebMethod()] public public typetype function1function1()() {{

//corpo della funzione//corpo della funzione }}}}

Page 11: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

11

Definire i Web MethodDefinire i Web Method

La classe che implementa il Web ServiceLa classe che implementa il Web Service

Può derivare Può derivare System.Web.Services.WebServiceSystem.Web.Services.WebService (ne (ne riparleremo…)riparleremo…)

Espone i servizi sotto forma di metodi Espone i servizi sotto forma di metodi pubblicipubblici decorati con l’attributo decorati con l’attributo WebMethodWebMethod (è (è obbligatorio). Questi metodi:obbligatorio). Questi metodi:

Sono chiamati “metodi web” (Sono chiamati “metodi web” (web methodsweb methods))

Possono accettare come parametri e restituire solo Possono accettare come parametri e restituire solo istanze di tipi serializzabiliistanze di tipi serializzabili

Contengono l’effettiva implementazione del servizioContengono l’effettiva implementazione del servizio

Page 12: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

12

Definire i Web MethodDefinire i Web Method

Page 13: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

13

Provare il Web ServiceProvare il Web Service

Il runtime di ASP .NET pubblica automaticamente Il runtime di ASP .NET pubblica automaticamente una una welcome pagewelcome page per il WS. La welcome page: per il WS. La welcome page:

Può essere personalizzataPuò essere personalizzata

Visualizza (mediante Visualizza (mediante ReflectionReflection) tutti i metodi web ) tutti i metodi web disponibilidisponibili

Permette di provare (solo in locale) i metodi webPermette di provare (solo in locale) i metodi web

Page 14: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

14

Provare il Web ServiceProvare il Web Service

Page 15: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

15

Provare il Web ServiceProvare il Web Service

Page 16: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

16

demo

Page 17: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

17

Usare Web Service: la classe proxyUsare Web Service: la classe proxy

Si presenta come la classe "originale", ma non contiene Si presenta come la classe "originale", ma non contiene logica applicativalogica applicativa

Usa SOAP per interagire con il Web ServiceUsa SOAP per interagire con il Web Service

Implementa anche i membri per l’uso asincrono del WSImplementa anche i membri per l’uso asincrono del WS

Creata a partire dal file Creata a partire dal file WSDLWSDL

InternetInternet XML WebService

XML WebService

ProxyProxy

WebForm

Page 18: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

18

Creare la classe proxyCreare la classe proxy

VS .NET crea la classe proxy partendo dal VS .NET crea la classe proxy partendo dal documento documento WSDL WSDL ((Web Services Definition Web Services Definition LanguageLanguage))

Il documento WSDLIl documento WSDLContiene l’elenco dei Contiene l’elenco dei web methodweb method e dei tipi in e dei tipi in input/outputinput/output

E’ prodotto da ASP .NETE’ prodotto da ASP .NET

Raggiungibile con l’url: Raggiungibile con l’url: http://miosito/mioservizio.asmx?http://miosito/mioservizio.asmx?WSDLWSDL

E’ linkato dalla welcome pageE’ linkato dalla welcome page

Page 19: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

19

Provare il Web ServiceProvare il Web Service

Page 20: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

20

Il documento WSDLIl documento WSDL

Page 21: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

21

Creare la classe proxyCreare la classe proxy

1.1. Creare una Web reference per il Web Creare una Web reference per il Web ServiceService

2.2. Creare una istanza della classe proxyCreare una istanza della classe proxy

3.3. Chiamare i metodi web del Web ServiceChiamare i metodi web del Web Service

4.4. Eseguire l’applicazione consumerEseguire l’applicazione consumer

Sub Button1_Click(s As Object, e As EventArgs)...Sub Button1_Click(s As Object, e As EventArgs)...Dim MyMath As New spc.halo.mswebcast.Math()Dim MyMath As New spc.halo.mswebcast.Math()Dim r As Integer = MyMath.Sum(8, 54)Dim r As Integer = MyMath.Sum(8, 54)

End SubEnd Sub

Sub Button1_Click(s As Object, e As EventArgs)...Sub Button1_Click(s As Object, e As EventArgs)...Dim MyMath As New spc.halo.mswebcast.Math()Dim MyMath As New spc.halo.mswebcast.Math()Dim r As Integer = MyMath.Sum(8, 54)Dim r As Integer = MyMath.Sum(8, 54)

End SubEnd Sub

1111

2222

3333

4444

Page 22: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

22

Creare una Web ReferenceCreare una Web Reference

Page 23: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

23

Creare una Web ReferenceCreare una Web Reference

Page 24: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

24

Creare una Web ReferenceCreare una Web Reference

Page 25: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

25

demo

Page 26: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

26

L’attributo WebServiceL’attributo WebService

L’attributo L’attributo WebServiceWebService::NonNon è obbligatorio (ma noi lo applichiamo è obbligatorio (ma noi lo applichiamo ))

Permette di specificare il Permette di specificare il target namespace target namespace (importante!)(importante!)

Permette di specificare una descrizione per il Permette di specificare una descrizione per il Web ServiceWeb Service

Page 27: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

27

Proprietà di WebServiceAttributeProprietà di WebServiceAttribute

ProprietàProprietà DescrizioneDescrizioneDescriptionDescription Permette di specificare la descrizione Permette di specificare la descrizione

del Web Service da inserire nel del Web Service da inserire nel documento WSDL e nella pagina di documento WSDL e nella pagina di presentazione prodotta da ASP .NETpresentazione prodotta da ASP .NET

NameName Permette di definire per il Web Service Permette di definire per il Web Service un nome differente da quello fornito un nome differente da quello fornito alla classe che lo implementaalla classe che lo implementa

NamespaceNamespace Permette di definire il target Permette di definire il target namespace utilizzato dal Web servicenamespace utilizzato dal Web service

Page 28: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

28

Provare il Web ServiceProvare il Web Service

Page 29: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

29

Impostare il NamespaceImpostare il Namespace

Impostare il namespace rende non ambigui i Impostare il namespace rende non ambigui i tipi di dato veicolati dal web servicetipi di dato veicolati dal web service

Per ottenere questo:Per ottenere questo:

Il nome del namespace non deve essere Il nome del namespace non deve essere ambiguoambiguo

Tipicamente si usa un nome di Tipicamente si usa un nome di dominio dominio DNSDNS come parte del namespace come parte del namespace

Page 30: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

30

Impostare il NamespaceImpostare il Namespace

<WebService(Namespace:=“http://miosito/NS/”)> _<WebService(Namespace:=“http://miosito/NS/”)> _Class Class Service1Service1 <WebMethod()> _<WebMethod()> _

Public Function Public Function function1function1() As type() As type ‘ ‘corpo della funzionecorpo della funzione

End FunctionEnd FunctionEnd ClassEnd Class

<WebService(Namespace:=“http://miosito/NS/”)> _<WebService(Namespace:=“http://miosito/NS/”)> _Class Class Service1Service1 <WebMethod()> _<WebMethod()> _

Public Function Public Function function1function1() As type() As type ‘ ‘corpo della funzionecorpo della funzione

End FunctionEnd FunctionEnd ClassEnd Class

[WebService(Namespace=“http://miosito/NS/”)][WebService(Namespace=“http://miosito/NS/”)]class class Service1Service1{{ [WebMethod()][WebMethod()] public public typetype function1function1()() {{

//corpo della funzione//corpo della funzione }}}}

[WebService(Namespace=“http://miosito/NS/”)][WebService(Namespace=“http://miosito/NS/”)]class class Service1Service1{{ [WebMethod()][WebMethod()] public public typetype function1function1()() {{

//corpo della funzione//corpo della funzione }}}}

Page 31: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

31

demo

Page 32: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

32

L’attributo WebMethodL’attributo WebMethod

L’attributo L’attributo WebMethodWebMethod::E’ E’ obbligatorioobbligatorio

Permette di specificare una descrizione per il Permette di specificare una descrizione per il metodo webmetodo web

Page 33: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

33

Proprietà di WebMethodAttributeProprietà di WebMethodAttribute

ProprietàProprietà DescrizioneDescrizioneBufferResponseBufferResponse Permette di abilitare/disabilitare il Permette di abilitare/disabilitare il

buffering. Se impostata a true¸ buffering. Se impostata a true¸ ASP .NET comporrà l’intero pacchetto ASP .NET comporrà l’intero pacchetto HTTP di risposta in un buffer prima di HTTP di risposta in un buffer prima di inviarlo al clientinviarlo al client

CacheDurationCacheDuration Permette di specificare il tempo, in Permette di specificare il tempo, in secondi, di permanenza in cache della secondi, di permanenza in cache della risposta generata per il metodo web.risposta generata per il metodo web.

DescriptionDescription Permette di specificare la descrizione Permette di specificare la descrizione del metodo web da inserire nel del metodo web da inserire nel documento WSDL e nella pagina di documento WSDL e nella pagina di presentazione del Web Service.presentazione del Web Service.

Page 34: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

34

Proprietà di WebMethodAttributeProprietà di WebMethodAttribute

ProprietàProprietà DescrizioneDescrizioneEnableSessionEnableSession Se impostato a Se impostato a truetrue, permette al , permette al

metodo web di avvalersi dei servizi di metodo web di avvalersi dei servizi di gestione delle sessioni forniti da gestione delle sessioni forniti da ASP .NETASP .NET

MessageNameMessageName Permette di impostare un alias per il Permette di impostare un alias per il nome del metodo webnome del metodo web

TransactionOptionTransactionOption Permette al metodo web di partecipare Permette al metodo web di partecipare ad una transazione nel ruolo di oggetto ad una transazione nel ruolo di oggetto root della stessa.root della stessa.

Page 35: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

35

demo

Page 36: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

36

LinkLink

Web:Web:

http://msdn.microsoft.com/webservices/http://msdn.microsoft.com/webservices/

http://www.ugidotnet.org/webservices.cnthttp://www.ugidotnet.org/webservices.cnt

NewsgroupNewsgroup: (news.microsoft.com): (news.microsoft.com)

nntp://microsoft.public.it.dotnet.framework.nntp://microsoft.public.it.dotnet.framework.webserviceswebservices

nntp://nntp://microsoft.public.it.dotnet.soapmicrosoft.public.it.dotnet.soap

Page 37: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

37

Prossimi appuntamentiProssimi appuntamenti

Consumare Web ServicesConsumare Web Services

20 Febbraio 2004 (14:30-16:00)20 Febbraio 2004 (14:30-16:00)

Advanced Web ServicesAdvanced Web Services

27 Febbraio 2004 (14:30-16:00)27 Febbraio 2004 (14:30-16:00)

http://www.microsoft.com/italy/msdn/webcast/default.asphttp://www.microsoft.com/italy/msdn/webcast/default.asp

Page 38: ASP.NET & Web Service: Introduzione Andrea Saltarello Microsoft.NET MVP UGIdotNET – .

38

© 2003-2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.