ASP.net Web Services

8
 Implementare Web Service con ASP.NET ASP.NETWeb Service Nell'era del "tutto connesso" è diventato essenziale dotare le proprie applicazioni web di meccanismi in grado di fornire i propri dati a dispositivi di natura eterogenea. Ecco come creare ed utilizzare Web Services con ASP.NET. Di questi tempi avrete sicuramente sentito parlare di Web Services se vi occupate in qualche modo delle tecnologie legate allo sviluppo web. E' senza dubbio l'argomento preferito di conferenze, libri e studi di mercato dell'ultimo periodo. Tutto sembra indicare che avranno un gran successo, considerando che aziende del calibro di Microsoft, Sun e IBM stanno investendo molte delle proprie energie (e dei fondi propri) in questa nuova direzione. Allo stato attuale, dunque, quasi tutti i grossi vendor hanno delle soluzioni che implementano in una qualche miusa i Web Services: .NET di Microsoft, Sun ONE di Sun Microsystems, Oracle9i di Oracle, per citare i più importanti, quelli che sicuramente si spartiranno una grossa fetta della torta. Districarsi tra tutte queste soluzioni non è cosa semplice, specie perché c'è una grande battaglia di numeri, a colpa di benchmark, test e contro-test. Potete farvi comunque un'idea di questi "litigi", a partire da questa pagina . Ad ogni modo, con questo articolo cercheremo di capire meglio cosa sono e come possono essere utilizzati, soffermendoci in modo specifico su ASP.NET. Perché web services? In un mondo dove tutto è connesso ma non abbastanza, e molte altre periferiche lo saranno sicuramente in un futuro abbastanza prossimo, diventa importante avere uno standard in grado di astrarre una serie di principi e funzionalità, per garantire a dispositivi di natura differente pieno accesso a tipologie di dati eterogenei. Oggi sembra futuristico, ma tra un paio d'anni il nostro frigorifero o la nostra lavatrice, o se preferite il nostro videoregistratore o il condizionatore di casa, avranno un piccolo server web incorporato al loro interno, in grado di svolgere alcune funzionalità oggi inimmaginabili, come il controllo a distanza, la manutenzione, la loro sincronizzazione. Pensate ad uno scenario del genere: programmare una serata con gli amici, davanti la TV, con la sicurezza di trovare la casa riscaldata ed il frigo pieno... Appare chiaro che uno standard sia auspicabile, oltre che inevitabile per certi versi: chi può permettersi il lusso di acquistare componenti incompatibili tra di loro? I web services non sono altro che un tentativo di uniformare le "lingue" di diversi dispositivi e farli dialogare tra di loro nel migliore dei modi possibile. Cosa si può fare subito? In linea di massima nell'informatica e nel mondo di internet in particolare si tende a cercare le soluzioni più economiche e che abbiano un tempo di sviluppo o riconversione vantaggio r ispetto alle altre. Ci sono molti punti a favore di Web Services come tecnologia:

Transcript of ASP.net Web Services

Page 1: ASP.net Web Services

5/12/2018 ASP.net Web Services - slidepdf.com

http://slidepdf.com/reader/full/aspnet-web-services-55a358f8c8e0b 1/8

Implementare Web Service con ASP.NET

ASP.NETWeb Service

Nell'era del "tutto connesso" è diventato essenziale dotare le proprie applicazioni web dimeccanismi in grado di fornire i propri dati a dispositivi di natura eterogenea. Ecco come creare edutilizzare Web Services con ASP.NET.

Di questi tempi avrete sicuramente sentito parlare di Web Services se vi occupate in qualche mododelle tecnologie legate allo sviluppo web.

E' senza dubbio l'argomento preferito di conferenze, libri e studi di mercato dell'ultimo periodo.

Tutto sembra indicare che avranno un gran successo, considerando che aziende del calibro diMicrosoft, Sun e IBM stanno investendo molte delle proprie energie (e dei fondi propri) in questanuova direzione.

Allo stato attuale, dunque, quasi tutti i grossi vendor hanno delle soluzioni che implementano in unaqualche miusa i Web Services: .NET di Microsoft, Sun ONE di Sun Microsystems, Oracle9i diOracle, per citare i più importanti, quelli che sicuramente si spartiranno una grossa fetta della torta.

Districarsi tra tutte queste soluzioni non è cosa semplice, specie perché c'è una grande battaglia dinumeri, a colpa di benchmark, test e contro-test.

Potete farvi comunque un'idea di questi "litigi", a partire da questa pagina .

Ad ogni modo, con questo articolo cercheremo di capire meglio cosa sono e come possono essereutilizzati, soffermendoci in modo specifico su ASP.NET.

Perché web services?In un mondo dove tutto è connesso ma non abbastanza, e molte altre periferiche lo sarannosicuramente in un futuro abbastanza prossimo, diventa importante avere uno standard in grado diastrarre una serie di principi e funzionalità, per garantire a dispositivi di natura differente pienoaccesso a tipologie di dati eterogenei.

Oggi sembra futuristico, ma tra un paio d'anni il nostro frigorifero o la nostra lavatrice, o sepreferite il nostro videoregistratore o il condizionatore di casa, avranno un piccolo server webincorporato al loro interno, in grado di svolgere alcune funzionalità oggi inimmaginabili, come ilcontrollo a distanza, la manutenzione, la loro sincronizzazione.

Pensate ad uno scenario del genere: programmare una serata con gli amici, davanti la TV, con la

sicurezza di trovare la casa riscaldata ed il frigo pieno...Appare chiaro che uno standard sia auspicabile, oltre che inevitabile per certi versi: chi puòpermettersi il lusso di acquistare componenti incompatibili tra di loro?

I web services non sono altro che un tentativo di uniformare le "lingue" di diversi dispositivi e farlidialogare tra di loro nel migliore dei modi possibile.

Cosa si può fare subito?

In linea di massima nell'informatica e nel mondo di internet in particolare si tende a cercare lesoluzioni più economiche e che abbiano un tempo di sviluppo o riconversione vantaggio rispetto

alle altre.Ci sono molti punti a favore di Web Services come tecnologia:

Page 2: ASP.net Web Services

5/12/2018 ASP.net Web Services - slidepdf.com

http://slidepdf.com/reader/full/aspnet-web-services-55a358f8c8e0b 2/8

• è una tecnologia disponibile già adesso su molte piattaforme e che sfrutta tecnologie giàdisponibili da molto tempo;

• si basa su HTTP, il più famoso ed utilizzato dei protocolli della famiglia TCP/IP, come baseper il trasporto dei dati e su XML/SOAP per la loro rappresentazione.

Niente di più standard, insomma.

Come funziona un web service

Principalmente un web service espone all'esterno una serie di funzionalità, attraverso un listener,anche chiamato server.

Un listener è un particolare programma che si mette in ascolto delle richieste che provengono daeventuali client ed ovviamente, cerca di rispondere nel modo migliore.

Come si può vedere dalla figura precedente, le parti in gioco sono due: il client che effettua larichiesta (anche chiamato consumer ) ed 3ener che fornisce una risposta (anche chiamatoprovider ).

E' essenzialmente quello che avviene con la normale navigazione attraverso un browser, solo che in

questo caso gli attori non sono utente e server, ma due server.Il tutto, come abbiamo già detto, sfruttando "solamente" XML (SOAP) e HTTP.

L'utilità dei Web Services

In genere i web services sono molto attuali, al giorno d'oggi, nell'ambito dei progetti legati inqualche modo all'e-business: banche, corrieri, società d'affari o di e-commerce, sono queste leprincipali "cavie" della tecnologia. Le informazioni si sono scambiate da sempre, l'unica differenzaè che ora c'è un metodo comune da seguire per snellire tutta una serie di processi e garantireun'uniformità di sviluppo.

Un gran bel vantaggio, credetemi!In breve, due entità si mettono d'accordo per scambiarsi una serie di informazioni e per astrarre ilprocedimento, si affidano ad un sistema in grado di garantire una manutenibilità ed una durata dellasoluzione il più lunga possibile.

Detta in questo modo potrebbe sembrare che l'unico modo possibile per utilizzare i web services siacostruirsene uno.

In realtà, un modo alternativo per andare alla caccia di web services è visitare UDDI.org ,Universal Description, Discovery, and Integration service, un servizio promosso da IBM eMicrosoft per rendere pubblici quei web services che possono essere integrati nelle proprie

applicazioni.Provate a visitare il sito: c'è solo l'imbarazzo della scelta!

Page 3: ASP.net Web Services

5/12/2018 ASP.net Web Services - slidepdf.com

http://slidepdf.com/reader/full/aspnet-web-services-55a358f8c8e0b 3/8

E con le ASP?

Le ASP non supportano nativamente i web services, bisogna pertanto dotarsi di un particolare tool(il SOAP Toolkit), scaricabile gratuitamente dal sito Microsoft .

Va installato sui server su cui andremo ad utilizzare i nostri web services (sia listener che client) epermette di accedere alle funzionalità di un web service senza entrare nei dettagli implementativi di

questa tecnologia.Avendo installato correttamente il toolkit, ci basterà un codice come quello utilizzato nel [listato1]per richiamare un web service.

Per quanto riguarda la creazione della parte server, ovvero di un servizio che metta a disposizionedei client eventuali informazioni, il discorso si complica un attimo.

Il SOAP toolkit è infatti in grado di convertire in web services solo server component, ovverooggetti COM compilati.

Questo vuol dire che se desiderate mantenere la business logic della vostra applicazione in unoscript ASP, o semplicemente il vostro attuale fornitore di hosting non vi permette l'uso di DLL

COM, questo non è l'approccio migliore e vi tocca fornire l'implementazione manualmente, cosapiuttosto scomoda e resa automatica dal toolkit grazie alla creazione dei file WDSL e WSML.

Se vi interessa comunque sfruttare queste caratteristiche, vi consiglio di leggere in proposito questotutorial .

A questo punto, è importante soffermarsi in particolare sul compito del WSDL (Web ServiceDescription Language), un file in formato XML, che descrive il Web Service in termini di metodirichiamabili, nomi dei parametri, tipi, ecc...

Rappresenta una sorta di contratto tra client e server, che si accordano in questo modo sulleinformazioni da scambiarsi, ed è essenziale perché le due entità funzionino correttamente.

Web Services nell'era .NET

Il .NET framework nasce già con pieno supporto ai web services, con un motore che cattura lechiamate ai web services, rendendo molto semplice e veloce l'accesso e la creazione di questogenere di applicazioni.

I Web Services .NET sono facilmente individuabili per via della loro estensione (.asmx).

Dunque, sviluppare Web Services con ASP.NET è estremamente semplice, come vedremo traqualche riga.

Se siamo in possesso di una copia (anche beta) di Visual Studio.NET, il discorso si fa ancora più

semplice: con pochi click è possibile creare un web service funzionante: sarà VS.NET a creareautomaticamente tutto il codice necessario.

Page 4: ASP.net Web Services

5/12/2018 ASP.net Web Services - slidepdf.com

http://slidepdf.com/reader/full/aspnet-web-services-55a358f8c8e0b 4/8

Esempio di creazione di Web Service con VS.NET.

Il listener con ASP.NET

Come dicevamo, il bello di ASP.NET risiede nella possibilità di gestire i web services in maniera

nativa.

Nel [listato 2] potete trovare un primo rudimentale esempio di Web Service. In questo caso abbiamoscelto come linguaggio il C#, ma nulla ci vieta di scriverlo in uno degli altri linguaggi supportati dal.NET framework.

Lo stesso web service scritto in VB.NET, la nuova versione riveduta e corretta di Visual Basic, èdisponibile nel [listato 3]. Come potete notare, differenza di sintassi a parte, il risultato e la logicadei due esempi è la stessa, indentica.

E' utile soffermarsi su alcuni punti in particolare:

• Namespace : è il nome esterno del web service. È importante scegliere qualcosa di sempliceed immediato.

• Description: è la descrizione che verrà mostrata quando si "naviga" all'interno di un webservices (vedere la figura 3).

Page 5: ASP.net Web Services

5/12/2018 ASP.net Web Services - slidepdf.com

http://slidepdf.com/reader/full/aspnet-web-services-55a358f8c8e0b 5/8

Semplicemente richiamando il nostro Web Services (ad esempio, conhttp://localhost/webservices/listenerVB.asmx) vedremo qualcosa come quello mostrato nella figuraprecedente.

Cliccando sull'unica funzione disponibile, accederemo ad una schermata come la seguente, che cipermetterà di testare il Web Service e ci mostrerà alcuni esempi di chiamata, molto utili nel caso incui si stia cercando di fruirne da una piattaforma differente.

Infine, aggiungendo ?WSDL come parametro (http://localhost/webservices/listenerVB.asmx?WSDL) ci verrà automaticamente mostrato il WSDL relativo.

Page 6: ASP.net Web Services

5/12/2018 ASP.net Web Services - slidepdf.com

http://slidepdf.com/reader/full/aspnet-web-services-55a358f8c8e0b 6/8

 

Costruiamo il client

Il client, anche detto consumer, consumatore, è leggermente più difficile da costruire rispetto allaparte server.

Per prima cosa, bisogna creare un proxy, a partire dal Web Service, che permetta al nostro client di

poter accedere senza problemi alle caratteristiche della parte server.Anche in questo caso ci viene incontro il .NET SDK, con un tool a riga di comando in grado dicostruire automaticamente il WSDL necessario ed implementarlo tramite proxy.

wsdl.exe /language: <i>language</i> /protocol: <i>protocol </i> /namespace: <i>Namespace</i> /out: <i>filename</i> /username: <i>username</i> /password: <i>password</i> /domain: <i>domain </i> /appsettingurlkey:<i>keyname</i> <i><url or path></i> 

Nel nostro caso, basta lanciare dal prompt dei comandi, questo:

wsdl.exe /language:Cs /namespace:myClient/out:euroClient.cs http://localhost/webservices/listenerVB.asmx 

Page 7: ASP.net Web Services

5/12/2018 ASP.net Web Services - slidepdf.com

http://slidepdf.com/reader/full/aspnet-web-services-55a358f8c8e0b 7/8

Abbiamo scelto di creare il proxy in C#, a partire dal nostro listener scritto in VB.NET, ma nulla civieta di fare il contrario o di utilizzare lo stesso linguaggio: sono dettagli implementativi che siamonoi stessi a decidere. Il lavoro di questo tool è visibile nel [listato 4].

Compilare il proxy

Per comodità, è conveniente creare un assembly (un file compilato) in grado di fornire l'accesso alweb services in tutte le pagine della nostra applicazione.

A tale scopo, creiamo un semplice file, sempre in C#, come quello del [listato 5], che si occuperàessenzialmente di semplificarci la vita.

Ci spostiamo dal prompt dei comandi sulla directory in cui sono contenuti i nostri due file, efacciamo eseguire il seguente comando, che compilerà i due file in un unico assembly:

csc.exe /t:library /out:MyClient.dll *.cs /r:System.dll,System.Web.dll

Csc non è altro che il compiler per C#, disponibile sempre con l'SDK .NET. L'omologo perVB.NET è VBc.exe. I parametri accettati sono gli stessi, in particolare out consente di specificare ilnome e la posizione del file generato.

Il file creato, MyClient.dll, andrà sposato nella directory /bin/ della nostra applicazione, cherappresenta il percorso in cui il motore ASP.NET va a ricercare gli assembly.

Implementare il proxy

Una volta creato il proxy, dobbiamo implementarlo. Il meccanismo a questo punto è moltosemplice, basta utilizzare uno script come quello del [listato 6].

Si tratta di ereditare dal proxy alcune caratteristiche, tramite la direttiva  Inherits . Abbiamo scelto lavita meno flessibile ma certamente più standard, quindi è possibile semplificare lo script, facendo inmodo che restituisca il valore attraverso una semplice funzione.

ConclusioniLe varianti possibili sono numerose e a partire da questi esempi potete certamente creare WebServices di un'utilità sicuramente maggiore rispetto alla semplice conversione Lire-Euro.

Page 8: ASP.net Web Services

5/12/2018 ASP.net Web Services - slidepdf.com

http://slidepdf.com/reader/full/aspnet-web-services-55a358f8c8e0b 8/8

Ad ogni modo, gli esempi trattati in questo articolo potete scaricarili e provarli in locale.

Questo articolo è solo uno spunto, qualcosa per farvi scoprire nel migliore dei modi questatecnologia davvero affascinante.

Sappiate che ormai quasi tutti i prodotti supportano o hanno in cantiere il supporto per i WebServices, per cui può ritornarvi davvero utile dare un'occhiata più in profondità!

Approfondimenti

• Serializzazione XML con i Web Service di ASP.NET e ASP• WebServices.org• MSDN