Esporta (0) Stampa
Espandi tutto

Passaggio 2: Definire un contratto del servizio WCF per l'uso con Service Bus

Aggiornamento: giugno 2014

Questa è la seconda di sette attività necessarie per creare un servizio Windows Communication Foundation (WCF) di base e un client in grado di chiamare il servizio che usa Service Bus di Microsoft Azure. Per una panoramica delle sette attività, vedere Esercitazione sulla messaggistica inoltrata di Service Bus. Il passaggio precedente è Passaggio 1: Iscriversi a un account, mentre quello successivo è Passaggio 3: Implementare il contratto WCF per l'uso di Service Bus.

Quando si crea un servizio WCF di base (sia esso per Service Bus o meno), è necessario definire il contratto del servizio, che specifica le operazioni (terminologia dei servizi Web per indicare metodi o funzioni) supportate dal servizio. I contratti vengono creati tramite la definizione di un'interfaccia C++, C# o Visual Basic. In questa esercitazione viene illustrato come creare un contratto di questo tipo in C#. Ogni metodo nell'interfaccia corrisponde a una specifica operazione del servizio. A ogni interfaccia deve essere applicato l'attributo ServiceContractAttribute e a ogni operazione deve essere applicato l'attributo OperationContractAttribute. Se un metodo in un'interfaccia con l'attributo ServiceContractAttribute non dispone dell'attributo OperationContractAttribute, questo metodo non viene esposto. Il codice per queste attività viene fornito nell'esempio riportato dopo la procedura. Per ulteriori informazioni su come definire un contratto, vedere Progettazione di un contratto WCF per Service Bus. Per una descrizione più ampia dei contratti e dei servizi, vedere Designing and Implementing Services nella documentazione relativa a WCF.

Tempo previsto per il completamento: 10 minuti.

Per creare un contratto di Service Bus con un'interfaccia

  1. Aprire Visual Studio 2012 come amministratore. A questo scopo, fare clic con il pulsante destro del mouse sul programma nel menu Start, quindi scegliere Esegui come amministratore.

  2. Creare un nuovo progetto di applicazione console. Scegliere Nuovo dal menu File, quindi Progetto. Nella finestra di dialogo Nuovo progetto fare clic su Visual C# (se Visual C# non è visibile, cercare in Altri linguaggi), fare clic sul modello Applicazione console, quindi denominarlo EchoService. Usare il valore predefinito nel campo Percorso. Fare clic su OK per creare il progetto.

  3. Se si esegue Visual Studio 2008 o versioni successive, i due seguenti passaggi (4 e 5) non sono necessari.

  4. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto (in questo esempio EchoService), quindi scegliere Proprietà.

  5. Fare clic sulla scheda Applicazione a sinistra, quindi selezionare .NET Framework 4 dall'elenco a discesa Framework di destinazione.   Fare clic su quando viene richiesto di ricaricare il progetto.

  6. Per un progetto C#, Visual Studio crea un file denominato Program.cs. Questa classe includerà un metodo vuoto denominato Main(). Questo metodo è necessario per compilare correttamente un progetto di applicazione console ed è quindi opportuno lasciarlo all'interno del progetto.

  7. Aggiungere un riferimento a System.ServiceModel.dll nel progetto:

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse su Riferimenti nella cartella dei progetti, quindi scegliere Aggiungi riferimento.

    2. Selezionare la scheda .NET nella finestra di dialogo Aggiungi riferimento e scorrere verso il basso fino a System.ServiceModel, selezionarlo, quindi fare clic su OK.

    noteNota
    Quando si usa un compilatore da riga di comando, ad esempio Csc.exe, è necessario specificare anche il percorso degli assembly. Per impostazione predefinita, in un computer in cui è in esecuzione Windows 7 ad esempio il percorso è: Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation.

  8. In Esplora soluzioni fare doppio clic sul file Program.cs per aprirlo nell'editor.

  9. Aggiungere un'istruzione using per lo spazio dei nomi System.ServiceModel.

    using System.ServiceModel;
    

    System.ServiceModel è lo spazio dei nomi che consente di accedere a livello di codice alle funzionalità di base di WCF. In Service Bus vengono usati molti degli oggetti e degli attributi di WCF per definire contratti del servizio. È probabile che questo spazio dei nomi venga usato nella maggior parte delle applicazioni di Service Bus.

  10. Modificare il nome predefinito dello spazio dei nomi EchoService in Microsoft.ServiceBus.Samples.

    ImportantImportante
    In questa esercitazione viene usato lo spazio dei nomi C# Microsoft.ServiceBus.Samples, ossia lo spazio dei nomi del tipo gestito tramite contratto usato nel file di configurazione nel Passaggio 6: Configurare il client WCF. È possibile specificare tutti gli spazi dei nomi desiderati quando si crea questo esempio. L'esercitazione tuttavia non funzionerà a meno che gli spazi dei nomi del contratto e del servizio non vengano modificati di conseguenza nel file di configurazione dell'applicazione. Lo spazio dei nomi specificato nel file App.config deve essere lo stesso specificato nei file C#.

  11. Immediatamente dopo la dichiarazione dello spazio dei nomi Microsoft.ServiceBus.Samples, ma sempre all'interno dello spazio dei nomi, definire una nuova interfaccia denominata IEchoContract e applicare l'attributo ServiceContractAttribute all'interfaccia con un valore dello spazio dei nomi http://samples.microsoft.com/ServiceModel/Relay/. Il valore dello spazio dei nomi è diverso dallo spazio dei nomi usato nell'ambito del codice. Viene usato come identificatore univoco per questo contratto. Specificando lo spazio dei nomi esplicitamente, si evita che al nome del contratto venga aggiunto il valore dello spazio dei nomi predefinito.

    [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public interface IEchoContract
    {
    }
    
    
    noteNota
    Lo spazio dei nomi del contratto del servizio in genere include uno schema di denominazione contenente informazioni sulla versione. Se si includono le informazioni sulla versione nello spazio dei nomi del contratto del servizio, si consente ai servizi di isolare le modifiche principali definendo un nuovo contratto del servizio con un nuovo spazio dei nomi ed esponendolo in un nuovo endpoint. In questo modo i client possono continuare a usare il contratto del servizio precedente senza dover essere aggiornati. Le informazioni sulla versione possono essere costituite da una data o da un numero di build. Per ulteriori informazioni, vedere Controllo delle versioni del servizio. Ai fini di questa esercitazione, lo schema di denominazione dello spazio dei nomi del contratto del servizio non include informazioni sulla versione.

  12. Nell'interfaccia IEchoContract dichiarare un metodo per l'unica operazione esposta dal contratto IEchoContract nell'interfaccia e applicare l'attributo OperationContractAttribute al metodo che si desidera esporre come parte del contratto pubblico di Service Bus.

    [OperationContract]
    string Echo(string text);
    
  13. All'esterno del contratto, dichiarare un canale che eredita dalle interfacce IEchoChannel e IClientChannel, come indicato di seguito:

    
    
        [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
        public interface IEchoContract
        {
            [OperationContract]
            String Echo(string text);
        }
    
        public interface IEchoChannel : IEchoContract, IClientChannel { }
    
    

    Un canale è l'oggetto WCF attraverso il quale si scambiano informazioni l'host e il client. Successivamente verrà scritto il codice per il canale per l'eco delle informazioni tra le due applicazioni.

  14. Scegliere Compila soluzione dal menu Compila o premere F6 per verificare l'accuratezza delle operazioni eseguite.

Esempio

Il seguente esempio di codice illustra un'interfaccia di base che definisce un contratto di Service Bus.

using System;
using System.ServiceModel;

namespace Microsoft.ServiceBus.Samples
{
    [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public interface IEchoContract
    {
        [OperationContract]
        String Echo(string text);
    }

    public interface IEchoChannel : IEchoContract, IClientChannel { }


    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

Dopo aver creato l'interfaccia, è possibile implementarla, come descritto nel Passaggio 3: Implementare il contratto WCF per l'uso di Service Bus.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft