consumare web service andrea saltarello ugidotnet –
TRANSCRIPT
![Page 1: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/1.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/2.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/3.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/4.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/5.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/6.jpg)
6
GenesiGenesi di una classe proxy di una classe proxy
![Page 7: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/7.jpg)
7
GenesiGenesi di una classe proxy di una classe proxy
![Page 8: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/8.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/9.jpg)
9
WSDL: The Comeback!WSDL: The Comeback!
![Page 10: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/10.jpg)
10
WSDL: The Comeback!WSDL: The Comeback!
![Page 11: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/11.jpg)
11
WSDL: StrutturaWSDL: Struttura
![Page 12: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/12.jpg)
12
WSDL: StrutturaWSDL: Struttura
![Page 13: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/13.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/14.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/15.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/16.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/17.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/18.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/19.jpg)
19
MS SOAP ToolkitMS SOAP Toolkit
![Page 20: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/20.jpg)
20
MS SOAP ToolkitMS SOAP Toolkit
![Page 21: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/21.jpg)
21
demo
![Page 22: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/22.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/23.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/24.jpg)
24
Interop HOW-TOInterop HOW-TO
![Page 25: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/25.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/26.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/27.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/28.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/29.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/30.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/31.jpg)
31
Referenziare l’assemblyReferenziare l’assembly
![Page 32: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/32.jpg)
32
Consumare il WSConsumare il WS
![Page 33: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/33.jpg)
33
demo
![Page 34: Consumare Web Service Andrea Saltarello UGIdotNET –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/34.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/35.jpg)
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 –](https://reader035.vdocuments.net/reader035/viewer/2022062701/5542eb4b497959361e8b79d4/html5/thumbnails/36.jpg)
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.