Consumare Web Service Andrea Saltarello UGIdotNET – .

36
Consumare Web Consumare Web Service Service Andrea Saltarello Andrea Saltarello http://www.ugidotnet.org/4.blog http://www.ugidotnet.org/4.blog UGIdotNET – http://www.ugidotnet.org UGIdotNET – http://www.ugidotnet.org

Transcript of Consumare Web Service Andrea Saltarello UGIdotNET – .

Page 1: Consumare Web Service Andrea Saltarello  UGIdotNET – .

Consumare Web ServiceConsumare Web Service

Andrea SaltarelloAndrea Saltarello

http://www.ugidotnet.org/4.bloghttp://www.ugidotnet.org/4.blogUGIdotNET – http://www.ugidotnet.orgUGIdotNET – http://www.ugidotnet.org

Page 2: Consumare Web Service Andrea Saltarello  UGIdotNET – .

2

AgendaAgenda

Amarcord Amarcord Web Services: il backstageWeb Services: il backstage

Consumare WS con .NETConsumare WS con .NET

Consumare WS con ASP/VB6Consumare WS con ASP/VB6

Page 3: Consumare Web Service Andrea Saltarello  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

Basati su standard W3C in evoluzioneBasati su standard W3C in evoluzione

Page 4: Consumare Web Service Andrea Saltarello  UGIdotNET – .

4

AmarcordAmarcord

Per implementare un Web Service con Per implementare un Web Service con ASP .NETASP .NETAprire (o creare) un progetto WebAprire (o creare) un progetto Web

Aggiungere un WS al progettoAggiungere un WS al progetto

Aprire il modulo di code-behindAprire il modulo di code-behind

Aggiungere i Aggiungere i web methodweb methodMetodi pubblici Metodi pubblici decoratidecorati con con

WebMethodAttributeWebMethodAttribute

Page 5: Consumare Web Service Andrea Saltarello  UGIdotNET – .

5

AmarcordAmarcord

Possiamo consumer un WS mediante una Possiamo consumer un WS mediante una classe proxy:classe proxy:Aggiungere una Aggiungere una Web ReferenceWeb Reference al progetto al progetto

Istanziare la classe proxyIstanziare la classe proxy

Invocare i metodi della classe proxyInvocare i metodi della classe proxy

Fantastico, ma… Come #@?*! fa VS a creare la Fantastico, ma… Come #@?*! fa VS a creare la classe proxy?classe proxy?

Page 6: Consumare Web Service Andrea Saltarello  UGIdotNET – .

6

GenesiGenesi di una classe proxy di una classe proxy

Page 7: Consumare Web Service Andrea Saltarello  UGIdotNET – .

7

GenesiGenesi di una classe proxy di una classe proxy

Page 8: Consumare Web Service Andrea Saltarello  UGIdotNET – .

8

Anatomia di un Web MethodAnatomia di un Web Method

La Welcome page del web method La Welcome page del web method visualizza la struttura degli visualizza la struttura degli envelope SOAPenvelope SOAP veicolati dalla richiesta e dalla risposta httpveicolati dalla richiesta e dalla risposta http

La struttura dei dati veicolati dal web La struttura dei dati veicolati dal web service è definita nella sezione service è definita nella sezione <types /><types /> documento WSDLdocumento WSDL

Page 9: Consumare Web Service Andrea Saltarello  UGIdotNET – .

9

WSDL: The Comeback!WSDL: The Comeback!

Page 10: Consumare Web Service Andrea Saltarello  UGIdotNET – .

10

WSDL: The Comeback!WSDL: The Comeback!

Page 11: Consumare Web Service Andrea Saltarello  UGIdotNET – .

11

WSDL: StrutturaWSDL: Struttura

Page 12: Consumare Web Service Andrea Saltarello  UGIdotNET – .

12

WSDL: StrutturaWSDL: Struttura

Page 13: Consumare Web Service Andrea Saltarello  UGIdotNET – .

13

Consumare un Web ServiceConsumare un Web Service

Il consumatore analizza il WSDL e deduce le Il consumatore analizza il WSDL e deduce le modalità di comunicazione con il Web modalità di comunicazione con il Web ServiceService

Vediamo ora come consumare un WS quando Vediamo ora come consumare un WS quando il client è:il client è:

.NET.NET

VB6/ASPVB6/ASP

Page 14: Consumare Web Service Andrea Saltarello  UGIdotNET – .

14

Consumare WS con .NETConsumare WS con .NET

E’ possibile creare una classe proxy anche E’ possibile creare una classe proxy anche senza VS .NET, usandosenza VS .NET, usando wsdl.exewsdl.exe

Page 15: Consumare Web Service Andrea Saltarello  UGIdotNET – .

15

La classe ProxyLa classe ProxyPermette di specificare l’indirizzo del WS mediante la Permette di specificare l’indirizzo del WS mediante la

proprietà proprietà UrlUrl

Page 16: Consumare Web Service Andrea Saltarello  UGIdotNET – .

16

Parametrizzare il proxyParametrizzare il proxySpesso è conveniente usare lo Spesso è conveniente usare lo URL BehaviorURL Behavior della della

Web referenceWeb reference

Page 17: Consumare Web Service Andrea Saltarello  UGIdotNET – .

17

Consumare Ws con VB6Consumare Ws con VB6

Abbiamo due alternative:Abbiamo due alternative:

MS SOAP ToolkitMS SOAP Toolkit

COM InteroperabilityCOM Interoperability

Page 18: Consumare Web Service Andrea Saltarello  UGIdotNET – .

18

MS SOAP ToolkitMS SOAP Toolkit

E’ una libreria COM:E’ una libreria COM:Scaricabile gratuitamente dal sito MSScaricabile gratuitamente dal sito MS

Capace di generare e ricevere Capace di generare e ricevere envelope SOAPenvelope SOAP

Utilizzabile da VB6 e da ambienti di scripting (es: Utilizzabile da VB6 e da ambienti di scripting (es: ASP)ASP)

Non più supportata da MS a partire a Luglio 2004Non più supportata da MS a partire a Luglio 2004

Page 19: Consumare Web Service Andrea Saltarello  UGIdotNET – .

19

MS SOAP ToolkitMS SOAP Toolkit

Page 20: Consumare Web Service Andrea Saltarello  UGIdotNET – .

20

MS SOAP ToolkitMS SOAP Toolkit

Page 21: Consumare Web Service Andrea Saltarello  UGIdotNET – .

21

demo

Page 22: Consumare Web Service Andrea Saltarello  UGIdotNET – .

22

Consumare WS con InteropConsumare WS con Interop

Questa tecnica permette di utilizzare una Questa tecnica permette di utilizzare una classe proxy realizzata in .NET classe proxy realizzata in .NET esponendola come esponendola come CoClassCoClass (= classe (= classe COM). Occorre:COM). Occorre:Creare un Creare un assemblyassembly contenente la classe proxy contenente la classe proxy

Applicare uno Applicare uno strong namestrong name all’assembly all’assembly

Registrare l’assembly per l’interoperabilità COMRegistrare l’assembly per l’interoperabilità COM

Usare l’assembly alla stregua di una libreria COMUsare l’assembly alla stregua di una libreria COM

Page 23: Consumare Web Service Andrea Saltarello  UGIdotNET – .

23

Interop HOW-TOInterop HOW-TO

1.1. Creare un nuovo progetto, di tipo Creare un nuovo progetto, di tipo Class Class LibraryLibrary

2.2. Aggiungere una Web Reference alla Class Aggiungere una Web Reference alla Class LibraryLibrary

3.3. Creare una classe derivata da quella proxyCreare una classe derivata da quella proxy

4.4. Decorare la nuova classe con l’attributo Decorare la nuova classe con l’attributo ClassInterfaceClassInterface (utile per esporla a COM) (utile per esporla a COM)

Page 24: Consumare Web Service Andrea Saltarello  UGIdotNET – .

24

Interop HOW-TOInterop HOW-TO

Page 25: Consumare Web Service Andrea Saltarello  UGIdotNET – .

25

Applicare lo Strong NameApplicare lo Strong Name

Applicare uno Applicare uno Strong NameStrong Name ad un assembly ad un assembly equivale a “firmarlo”equivale a “firmarlo”

Per firmare un assembly:Per firmare un assembly:1.1. Creare una coppia di chiavi con Creare una coppia di chiavi con sn.exesn.exe

Page 26: Consumare Web Service Andrea Saltarello  UGIdotNET – .

26

Applicare lo Strong NameApplicare lo Strong Name

2.2. Associare le chiavi all’assembly Associare le chiavi all’assembly

Page 27: Consumare Web Service Andrea Saltarello  UGIdotNET – .

27

Esporre un assembly mediante InteropEsporre un assembly mediante Interop

1.1. Registrare l’assembly nella Registrare l’assembly nella GACGAC mediante mediante GACUtil.exeGACUtil.exe

La La Global Assembly CacheGlobal Assembly Cache è il repository degli è il repository degli assembly disponibili a tutte le applicazioniassembly disponibili a tutte le applicazioni

Page 28: Consumare Web Service Andrea Saltarello  UGIdotNET – .

28

Esporre un assembly mediante InteropEsporre un assembly mediante Interop

2.2. Creare la Creare la type librarytype library dell’assembly dell’assembly mediante mediante tlbexp.exetlbexp.exe

Page 29: Consumare Web Service Andrea Saltarello  UGIdotNET – .

29

Esporre un assembly mediante InteropEsporre un assembly mediante Interop

3.3. Registrare la type library mediante Registrare la type library mediante regasm.exeregasm.exe

Page 30: Consumare Web Service Andrea Saltarello  UGIdotNET – .

30

Consumare il WSConsumare il WS

Possiamo ora usare la classe proxy prodotta Possiamo ora usare la classe proxy prodotta con .NET come se fosse una normale con .NET come se fosse una normale libreria COMlibreria COM

Page 31: Consumare Web Service Andrea Saltarello  UGIdotNET – .

31

Referenziare l’assemblyReferenziare l’assembly

Page 32: Consumare Web Service Andrea Saltarello  UGIdotNET – .

32

Consumare il WSConsumare il WS

Page 33: Consumare Web Service Andrea Saltarello  UGIdotNET – .

33

demo

Page 34: Consumare Web Service Andrea Saltarello  UGIdotNET – .

34

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 35: Consumare Web Service Andrea Saltarello  UGIdotNET – .

35

Prossimo appuntamentoProssimo appuntamento

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 36: Consumare Web Service Andrea Saltarello  UGIdotNET – .

36

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