consumare web service andrea saltarello ugidotnet –
TRANSCRIPT
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
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
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
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
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?
6
GenesiGenesi di una classe proxy di una classe proxy
7
GenesiGenesi di una classe proxy di una classe proxy
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
9
WSDL: The Comeback!WSDL: The Comeback!
10
WSDL: The Comeback!WSDL: The Comeback!
11
WSDL: StrutturaWSDL: Struttura
12
WSDL: StrutturaWSDL: Struttura
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
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
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
16
Parametrizzare il proxyParametrizzare il proxySpesso è conveniente usare lo Spesso è conveniente usare lo URL BehaviorURL Behavior della della
Web referenceWeb reference
17
Consumare Ws con VB6Consumare Ws con VB6
Abbiamo due alternative:Abbiamo due alternative:
MS SOAP ToolkitMS SOAP Toolkit
COM InteroperabilityCOM Interoperability
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
19
MS SOAP ToolkitMS SOAP Toolkit
20
MS SOAP ToolkitMS SOAP Toolkit
21
demo
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
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)
24
Interop HOW-TOInterop HOW-TO
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
26
Applicare lo Strong NameApplicare lo Strong Name
2.2. Associare le chiavi all’assembly Associare le chiavi all’assembly
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
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
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
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
31
Referenziare l’assemblyReferenziare l’assembly
32
Consumare il WSConsumare il WS
33
demo
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
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
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.