Condividi tramite


Servizi Windows Communication Foundation e dati WCF in Visual Studio

In Visual Studio 2008 vengono forniti gli strumenti per utilizzare Windows Communication Foundation (WCF) e WCF Data Services, le tecnologie Microsoft per la creazione di applicazioni distribuite. In questo argomento viene fornita un'introduzione ai servizi 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.

Cosa sono i servizi dati WCF

WCF Data Services sono servizi che interagiscono direttamente con un database, consentendo di restituire i dati utilizzando verbi HTTP standard quali GET, POST, PUT o DELETE. In generale WCF Data Services sono una buona scelta per le applicazioni utilizzate per creare, aggiornare o eliminare i record in un database. Per ulteriori informazioni, vedere Framework di ADO.NET Data Services (la pagina potrebbe essere in inglese).

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
[ServiceContract]
public interface IService1
<OperationContract()>
Function GetData(ByVal value As String) As String
[OperationContract]
string GetData(string value);

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:

  Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
      Dim client As New ServiceReference1.Service1Client
      Dim returnString As String

      returnString = client.GetData(TextBox1.Text)
      Label1.Text = returnString
  End Sub
private void button1_Click(System.Object sender, System.EventArgs e)
{
    ServiceReference1.Service1Client client = new
        ServiceReference1.Service1Client();
    string returnString;

    returnString = client.GetData(textBox1.Text);
    label1.Text = 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 WCF Visual Studio Templates.

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 WCF Service Host (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 WCF Test Client (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 informazioni di configurazione necessarie vengono aggiunte al file app.config. Nella maggior parte dei casi è sufficiente creare un'istanza del servizio per utilizzarlo.

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.

Argomenti correlati

Titolo

Descrizione

Procedura dettagliata: creazione e accesso ai servizi WCF

Viene fornita una spiegazione dettagliata della procedura di creazione e utilizzo dei servizi WCF in Visual Studio.

Procedura dettagliata: creazione e accesso a un servizio dati WCF in Visual Studio

Viene fornita una spiegazione dettagliata sulla creazione e sull'utilizzo di WCF Data Services in Visual Studio.

Using the WCF Development Tools

Viene descritta la modalità di creazione ed esecuzione di test dei servizi WCF in Visual Studio.

Procedura: aggiungere, aggiornare o rimuovere un riferimento al servizio

Viene descritto come aggiungere, aggiornare o rimuovere servizi WCF da un progetto.

Procedura: aggiungere, aggiornare o rimuovere un riferimento al servizio dati WCF

Viene illustrato come fare riferimento e utilizzare WCF Data Services in Visual Studio.

Procedura: aggiungere un riferimento a un servizio Web

Viene illustrato come aggiungere a un progetto un riferimento a un servizio Web XML (ASMX).

Procedura: selezionare un endpoint di servizio

Viene descritto come selezionare un endpoint per un servizio WCF che espone più endpoint.

Procedura: chiamare un metodo di servizio in modo asincrono

Viene descritto come chiamare un servizio Web in modo asincrono.

Procedura: associare dati restituiti da un servizio

Viene descritto come abilitare l'associazione dati a un servizio WCF.

Procedura: configurare un servizio per riutilizzare i tipi esistenti

Viene descritto come abilitare o disabilitare la condivisione dei tipi per un servizio WCF.

Risoluzione dei problemi relativi ai riferimenti al servizio

Vengono presentati alcuni errori comuni che possono verificarsi nei riferimenti ai servizi e viene spiegato come evitarli.

Debug dei servizi WCF

Vengono descritti alcuni problemi di debug comuni e vengono illustrate varie tecniche per il debug di servizi WCF.

Cenni preliminari sul servizio di autenticazione di Windows Communication Foundation

Viene descritto come utilizzare WCF per fornire un servizio ruolo di un sito Web.

Messaggistica in .NET Compact Framework

Viene descritto il supporto per il livello d messaggistica WCF in .NET Compact Framework.

Procedura dettagliata: creazione di un'applicazione dati a più livelli

Vengono fornite istruzioni dettagliate per la creazione di un dataset tipizzato e la separazione del codice dei TableAdapter e dei dataset in più progetti.

Finestra di dialogo Aggiungi riferimento al servizio

Vengono descritti gli elementi dell'interfaccia utente della finestra di dialogo Aggiungi riferimento al servizio.

Finestra di dialogo Configura riferimento a servizio

Vengono descritti gli elementi dell'interfaccia utente della finestra di dialogo Configura riferimento a servizio.

Riferimento

System.ServiceModel

System.Data.Services