Consumare Web Service Andrea Saltarello http://www.ugidotnet.org/4.blog UGIdotNET – http://www.ugidotnet.org Agenda Amarcord Web Services: il backstage Consumare WS con .NET Consumare WS con ASP/VB6 Funzionalità dei Web Services Programmable logic accessible by standard Web protocols Permettono alle applicazioni di inviare e ricevere informazioni tramite Internet Indipendenti da linguaggi, protocolli e piattaforme Architettura stateless Basati su standard W3C in evoluzione Amarcord Per implementare un Web Service con ASP .NET Aprire (o creare) un progetto Web Aggiungere un WS al progetto Aprire il modulo di code-behind Aggiungere i web method Metodi pubblici decorati con WebMethodAttribute Amarcord Possiamo consumer un WS mediante una classe proxy: Aggiungere una Web Reference al progetto Istanziare la classe proxy Invocare i metodi della classe proxy Fantastico, ma… Come #@?*! fa VS a creare la classe proxy? Genesi di una classe proxy Genesi di una classe proxy Anatomia di un Web Method La Welcome page del web method visualizza la struttura degli envelope SOAP veicolati dalla richiesta e dalla risposta http La struttura dei dati veicolati dal web service è definita nella sezione <types /> documento WSDL WSDL: The Comeback! WSDL: The Comeback! WSDL: Struttura WSDL: Struttura Consumare un Web Service Il consumatore analizza il WSDL e deduce le modalità di comunicazione con il Web Service Vediamo ora come consumare un WS quando il client è: .NET VB6/ASP Consumare WS con .NET E’ possibile creare una classe proxy anche senza VS .NET, usando wsdl.exe La classe Proxy Permette di specificare l’indirizzo del WS mediante la proprietà Url Parametrizzare il proxy Spesso è conveniente usare lo URL Behavior della Web reference Consumare Ws con VB6 Abbiamo due alternative: MS SOAP Toolkit COM Interoperability MS SOAP Toolkit E’ una libreria COM: Scaricabile gratuitamente dal sito MS Capace di generare e ricevere envelope SOAP Utilizzabile da VB6 e da ambienti di scripting (es: ASP) Non più supportata da MS a partire a Luglio 2004 MS SOAP Toolkit MS SOAP Toolkit demo Consumare WS con Interop Questa tecnica permette di utilizzare una classe proxy realizzata in .NET esponendola come CoClass (= classe COM). Occorre: Creare un assembly contenente la classe proxy Applicare uno strong name all’assembly Registrare l’assembly per l’interoperabilità COM Usare l’assembly alla stregua di una libreria COM Interop HOW-TO 1. 2. 3. 4. Creare un nuovo progetto, di tipo Class Library Aggiungere una Web Reference alla Class Library Creare una classe derivata da quella proxy Decorare la nuova classe con l’attributo ClassInterface (utile per esporla a COM) Interop HOW-TO Applicare lo Strong Name Applicare uno Strong Name ad un assembly equivale a “firmarlo” Per firmare un assembly: 1. Creare una coppia di chiavi con sn.exe Applicare lo Strong Name 2. Associare le chiavi all’assembly Esporre un assembly mediante Interop 1. Registrare l’assembly nella GAC mediante GACUtil.exe La Global Assembly Cache è il repository degli assembly disponibili a tutte le applicazioni Esporre un assembly mediante Interop 2. Creare la type library dell’assembly mediante tlbexp.exe Esporre un assembly mediante Interop 3. Registrare la type library mediante regasm.exe Consumare il WS Possiamo ora usare la classe proxy prodotta con .NET come se fosse una normale libreria COM Referenziare l’assembly Consumare il WS demo Link Web: http://msdn.microsoft.com/webservices/ http://www.ugidotnet.org/webservices.cnt Newsgroup: (news.microsoft.com) nntp://microsoft.public.it.dotnet.framework. webservices nntp://microsoft.public.it.dotnet.soap Prossimo appuntamento Advanced Web Services 27 Febbraio 2004 (14:30-16:00) http://www.microsoft.com/italy/msdn/webcast/default.asp © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.