Condividi tramite


Introduzione ai servizi di Windows Communication Foundation in Visual Studio

Aggiornamento: novembre 2007

Visual Studio 2008 fornisce gli strumenti per utilizzare Windows Communication Foundation (WCF), la tecnologia Microsoft per la creazione di applicazioni distribuite. In questo argomento viene offerta un'introduzione a WCF dalla prospettiva di Visual Studio.

Cos'è WCF

Windows Communication Foundation (WCF) è un framework unificato per la creazione di applicazioni distribuite sicure, affidabili, transazionali e interoperabili. Nelle versioni precedenti di Visual Studio erano incluse diverse tecnologie utilizzabili per le comunicazioni tra applicazioni.

Se si desiderava condividere informazioni in modo da consentirne l'accesso da qualsiasi piattaforma, si utilizzava un servizio Web, noto anche come servizio Web ASMX. Se si intendeva solo spostare i dati tra un client e un server che eseguiva il sistema operativo Windows, si utilizzava .NET Remoting. Se si desiderava stabilire comunicazioni transazionali, si utilizzava Enterprise Services (DCOM), oppure se si desiderava un modello di accodamento si utilizzava Accodamento messaggi (noto anche come MSMQ).

WCF unisce le funzionalità di tutte quelle tecnologie in un modello di programmazione unificato, semplificando l'esperienza dello sviluppo di applicazioni distribuite.

Modello di programmazione di WCF

Il modello di programmazione di WCF si basa sulla comunicazione tra due entità: un servizio WCF e un client WCF. Il modello di programmazione è incapsulato nello spazio dei nomi System.ServiceModel in .NET Framework.

Servizio WCF

Un servizio WCF si basa su un'interfaccia che definisce un contratto tra il servizio e il client ed è contrassegnato con un attributo ServiceContractAttribute, come indicato nel codice seguente:

<ServiceContract()> _
Public Interface IService1
    <OperationContract()> _
    Function GetData(ByVal Value As String) As String
End Interface

Si definiscono le funzioni o i metodi esposti da un servizio WCF contrassegnandoli con un attributo OperationContractAttribute. Inoltre è possibile esporre dati serializzati contrassegnando un tipo composto con un attributo DataContractAttribute, così da consentire l'associazione dati in un client.

Dopo essere stati definiti, l'interfaccia e i relativi metodi vengono incapsulati in una classe che implementa l'interfaccia. Una singola classe di servizio WCF può implementare più contratti di servizio.

Un servizio WCF viene esposto per l'utilizzo tramite un endpoint, che fornisce la sola modalità di comunicazione con il servizio. Non è infatti possibile accedere al servizio tramite un riferimento diretto come accade con le altre classi.

Un endpoint è costituito da un indirizzo, un'associazione e un contratto. L'indirizzo definisce dove si trova il servizio: può trattarsi di un URL, di un indirizzo FTP o di un percorso di rete o locale. Un'associazione definisce la modalità di comunicazione con il servizio. Le associazioni WCF forniscono un modello versatile per specificare un protocollo, ad esempio HTTP o FTP, un meccanismo di sicurezza, ad esempio Autenticazione di Windows o nomi utente e password e molto altro ancora. Un contratto include le operazioni esposte dalla classe del servizio WCF.

Per un servizio WCF possono essere esposti più endpoint. Ciò consente a client diversi di comunicare in modi differenti con lo stesso servizio. Ad esempio, un servizio tecnico bancario potrebbe fornire un endpoint per i dipendenti e un altro per i clienti esterni, con ogni endopint che utilizza un indirizzo, un'associazione e/o un contratto diversi.

Client WCF

Un client WCF è costituito da un proxy che consente a un'applicazione di comunicare con un servizio WCF e da un endpoint che corrisponde a un endpoint definito per il servizio. Il proxy viene generato sul lato client nel file app.config e include informazioni sui tipi e sui metodi esposti dal servizio. Nel caso di servizi che espongono più endpoint, il client può selezionare quello più adatto alle proprie necessità, ad esempio per comunicare su HTTP e utilizzare l'Autenticazione di Windows.

Dopo avere creato un client WCF, si fa riferimento al servizio nel codice proprio come avviene per qualsiasi altro oggetto. Ad esempio, per chiamare il metodo GetData mostrato precedentemente, si scrive del codice analogo al seguente:

Dim client As New ServiceReference.Service1Client
Dim returnString As String

returnString = client.GetData("Hello")
MsgBox(returnString)

Strumenti WCF in Visual Studio

Visual Studio 2008 fornisce gli strumenti utili per creare servizi WCF e client WCF. Per la procedura dettagliata che illustra tali strumenti, vedere Procedura dettagliata: creazione e accesso ai servizi WCF.

Creazione e test dei servizi WCF

È possibile utilizzare i modelli WCF di Visual Studio come base per creare rapidamente il proprio servizio. È quindi possibile utilizzare l'host automatico dei servizi WCF e il client di prova WCF per eseguire il debug e il test del servizio. Questi strumenti offrono congiuntamente un ciclo di debug e test rapido e comodo, ed eliminano la necessità di adottare un modello di hosting già nelle prime fasi.

Modelli WCF

I modelli WCF di Visual Studio forniscono una struttura di classe di base per lo sviluppo di servizi. Nella finestra di dialogo Aggiungi nuovo progetto sono disponibili vari modelli WCF, tra cui i progetti Libreria di servizi di WCF nonché i modelli di siti Web di servizi WCF e i modelli di elemento di servizi WCF.

Quando si seleziona un modello, vengono aggiunti i file per un contratto di servizio, un'implementazione del servizio e una configurazione del servizio. Tutti gli attributi necessari sono già presenti, così da avere a disposizione un tipo di servizio semplice per il quale non occorre scrivere il codice. Se lo si desidera, chiaramente, è possibile aggiungere codice per fornire funzioni e metodi per il servizio effettivo, ma i modelli forniscono la base.

Per ulteriori informazioni sui modelli WCF, vedere Modelli di Visual Studio WCF.

Host dei servizi WCF

Quando si avvia il debugger di Visual Studio (premendo F5) per un progetto di servizi WCF, lo strumento dell'host dei servizi WCF viene avviato automaticamente per ospitare localmente il servizio. L'host dei servizio WCF enumera i servizi in un progetto di servizi WCF, carica la configurazione del progetto e crea un'istanza di un host per ogni servizio trovato.

Utilizzando l'host dei servizi WCF è possibile testare un servizio WCF senza scrivere codice aggiuntivo o adottare un host specifico durante lo sviluppo.

Per ulteriori informazioni sull'host dei servizi WCF, vedere Host servizio WCF (WcfSvcHost.exe).

Client di prova WCF

Lo strumento Client di prova WCF consente di immettere i parametri di prova, inviare tale input a un servizio WCF e visualizzare la risposta che il servizio restituisce. Lo strumento offre una efficiente modalità di testing dei servizi se abbinato all'host dei servizi WCF.

Quando si preme F5 per eseguire il debug di un progetto di servizi WCF, il client di prova WCF si apre e visualizza un elenco di endpoint dei servizi definiti nel file di configurazione. È possibile testare i parametri e avviare il servizio e ripetere questo processo per testare e convalidare continuamente il servizio.

Per ulteriori informazioni sul client di prova WCF, vedere Client di test WCF (WcfTestClient.exe).

Accesso ai servizi WCF in Visual Studio

Visual Studio 2008 semplifica l'attività di creazione di client WCF grazie alla generazione automatica di un proxy e di un endpoint per i servizi aggiunti utilizzando la finestra di dialogo Aggiungi riferimento al servizio. Tutte le necessarie informazioni di configurazione vengono aggiunte al file app.config. La maggior parte delle volte è sufficiente creare un'istanza del servizio per poterlo utilizzare.

La finestra di dialogo Aggiungi riferimento al servizio consente di immettere l'indirizzo per un servizio o cercare un servizio definito nella soluzione. La finestra di dialogo restituisce l'elenco dei servizi e delle operazioni fornite da tali servizi. Consente inoltre di definire lo spazio dei nomi mediante il quale si farà riferimento ai servizi nel codice.

La finestra di dialogo Configura riferimento a servizio consente di personalizzare la configurazione di un servizio. È possibile modificare l'indirizzo di un servizio, specificare il livello di accesso, il comportamento asincrono e i tipi di contratto di messaggio nonché configurare il riutilizzo dei tipi.

Per ulteriori informazioni sull'utilizzo dei servizi WCF, vedere Utilizzo dei servizi WCF in Visual Studio.

Vedere anche

Attività

Procedura dettagliata: creazione e accesso ai servizi WCF

Altre risorse

Utilizzo dei servizi WCF in Visual Studio

Utilizzo degli strumenti di sviluppo WCF

Servizi Windows Communication Foundation e ADO.NET Data Services