Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Creare e consumare servizi WCF con Visual Studio 2008 Express Edition - prima parte

Oggi riprendo un argomento che ho già trattato in due occasioni un bel po’ di tempo fa, ma che ho deciso di trattare in maniera più approfondita e step-by-step perchè spesso il quesito è capitato nei forum di Visual Basic Tips & Tricks: come fare per creare e consumare servizi Windows Communication Foundation se si utilizzano le edizioni Express di Visual Studio 2008? In questo e nel prossimo post vedremo esattamente questo. In particolare, in questo post vedremo come utilizzare Microsoft Visual Web Developer 2008 Express Edition per creare un servizio WCF e Visual Basic 2008 Express Edition per consumarlo, mentre nel prossimo post vedremo come utilizzare direttamente Visual Basic 2008 per ricostruire il servizio WCF, pubblicarlo su IIS, consumarlo e riutilizzarlo come modello di progetto sempre disponibile.

 

La prima cosa da fare, quindi, è avviare Microsoft Visual Web Developer 2008 Express Edition (con privilegi amministrativi per poter poi accedere a IIS). Vogliamo creare un progetto per una WCF Service Application (quindi non un sito Web), utilizzando il template illustrato nella seguente figura, specificando il nome evidenziato:

 

 

 

Dopo alcuni secondi, VWD 2008 termina la creazione del nuovo progetto e si presenta come in figura:

 

 

Notate come, in Solution Explorer, sia presente il file di interfaccia IService1.vb, quindi il Contract, il file di configurazione e il file del servizio Service1.svc. Come sapete, in Visual Studio 2008 i file .svc hanno un file di code-behind che poi è quello che effettivamente implementa il contract (quindi sarà Service1.svc.vb). Quando fate doppio clic sul file .svc, per default Visual Studio vi rimanda al file di code-behind e non al markup. Rispetto ai post precedenti, stavolta facciamo un esempio un po’ più utile, sebbene molto semplice. Il nostro servizio, infatti, metterà a disposizione un metodo che validerà indirizzi e-mail, sfruttando le regular expression. Ciò premesso, in Solution Explorer rinominate il file IService1.vb in IExpressService.vb. Eliminate completamente il codice proposto per default e riscrivetelo come segue:

 

<ServiceContract()> _

Public Interface IExpressService

 

    <OperationContract()> _

    Function ValidateMailAddress(ByVal mailAddress As String) As Boolean

 

End Interface

 

Ora rinominate il file Service1.vb in ExpressService.vb e, anche qui, eliminate tutto il codice che Visual Web Developer ha aggiunto per default. La classe implementerà l’interfaccia nel modo seguente:

 

Public Class ExpressService

    Implements IExpressService

 

    Public Function ValidateMailAddress(ByVal mailAddress As String) As Boolean Implements IExpressService.ValidateMailAddress

        Dim validateMail As String = "^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-z]{2,4}|[0-9]{1,3})(\]?)$"

 

        Return Regex.IsMatch(mailAddress, validateMail)

    End Function

End Class

 

Il metodo ValidateMailAddress si occuperà di verificare la validità dell’indirizzo e-mail passato, restituendo vero o falso a seconda dell’esito della verifica. Ora dobbiamo aggiornare i riferimenti a interfaccia e classe nel file di configurazione Web.config. Dopo aver localizzato la sezione System.ServiceModel del file, modifichiamo gli attributi inerenti il servizio come segue, specificando gli identificatori della nostra interfaccia e della nostra classe:

 

            <services>

                  <service name="WcfExpressService.ExpressService" behaviorConfiguration="WcfExpressService.Service1Behavior">

                        <!-- Service Endpoints -->

                        <endpoint address="" binding="wsHttpBinding" contract="WcfExpressService.IExpressService">

L’ultimo passaggio consiste nell’aggiornare in modo analogo il file di markup ExpressService.svc. In Solution Explorer, fate clic destro su questo file e dal menu contestuale selezionate View Markup. Il codice del file deve essere aggiornato nel modo seguente:

 

<%@ ServiceHost Language="VB" Debug="true" Service="WcfExpressService.ExpressService" CodeBehind="ExpressService.svc.vb" %>

Il nostro servizio è pronto e va compilato. Dal menu Build, selezionate il comando Build seguito dal nome del progetto, accettando la successiva modifica del file di configurazione per il debug.

Una volta pronto, il servizio ha necessità, come noto, di essere ospitato in un’applicazione host. Tipico scenario è l’utilizzo di Internet Information Services e, anche in questo, Visual Web Developer 2008 svolge tutto il lavoro, al contrario di quanto dovevamo fare in VS 2005. Dal menu Build, selezioniamo il comando Publish. Comparirà una finestra in cui specificare il percorso di pubblicazione, che può essere IIS, una cartella locale, un server FTP. È possibile utilizzare il pulsante “...” per selezionare il percorso, oppure scriverlo a mano. Lo scriviamo come riportato in figura, accettando le impostazioni di default per la pubblicazione come in figura:

 

 

Una volta che la pubblicazione è avvenuta senza errori, verifichiamo che il servizio sia stato ospitato correttamente. Avviamo quindi il nostro browser Web e digitiamo l’URL del servizio. Se tutto è andato a buon fine, il browser si presenta come in figura:

 

 

 

Il servizio è quindi pronto per essere consumato. Avviamo Microsoft Visual Basic 2008 Express Edition e creiamo una nuova applicazione Console, come demo. Bisogna aggiungere un riferimento al servizio, operazione che si esegue utilizzando il comando Add Service Reference del menu Project. A questo punto, nell’apposita finestra che compare, è sufficiente digitare l’URL del servizio e fare clic su Go, come in figura:

 

 

Come potete osservare Visual Basic è in grado di elencare i metadati esposti dal servizio, ciò significa che il servizio è stato raggiunto correttamente. Modificate l’identificatore per il namespace come mostrato in figura, quindi fate clic su OK.

 

Abbiamo tutto il necessario per sfruttare il servizio. Per esempio, il seguente codice attende l’inserimento di un indirizzo e-mail e ne verifica la validità, mostrando un messaggio:

 

Imports ConsoleApplication1.ExpressServiceReference

 

Module Module1

 

    Sub Main()

 

        'Istanza della parte client

        Dim client As New ExpressServiceClient

 

        'Richiediamo un indirizzo e.mail

        Console.WriteLine("Type the mail address to validate:")

        Dim mailAddress As String = Console.ReadLine

 

        'lo validiamo tramite il servizio WCF

        If client.ValidateMailAddress(mailAddress) = True Then

            Console.WriteLine("You entered a valid mail address")

        Else

            Console.WriteLine("The mail address you entered is invalid.")

        End If

 

        Console.ReadLine()

    End Sub

 

End Module

Si istanzia normalmente il servizio e si richiama il metodo come da una normalissima classe. Se avviamo l’applicazione, otterremo il seguente risultato:

 

 

 

Come potete quindi osservare, creare e consumare servizi WCF con le edizioni Express di Microsoft Visual Studio 2008 è un procedimento decisamente semplice. Nel prossimo post vedremo come riprodurre il tutto con il solo Visual Basic 2008.

 

Alessandro

Print | posted on mercoledì 31 dicembre 2008 01:52 | Filed Under [ Visual Basic Visual Studio Express Editions Windows Communication Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET