Esporta (0) Stampa
Espandi tutto

Passaggio 2: Creare un client console

Aggiornamento: gennaio 2014

Questa è la seconda di nove attività necessarie per creare un'applicazione di coda e pubblicazione/sottoscrizione di tipo REST di base che utilizza Service Bus di Microsoft Azure.

Le code di Service Bus consentono di archiviare messaggi in una coda First In, First Out. Gli argomenti e le sottoscrizioni implementano un modello di pubblicazione/sottoscrizione. Si crea un argomento e quindi si creano una o più sottoscrizioni associate a tale argomento. I messaggi inviati all'argomento vengono immediatamente inviati ai sottoscrittori dell'argomento.

Nel codice contenuto in questa esercitazione vengono effettuate le seguenti operazioni:

  • Vengono utilizzati lo spazio dei nomi servizio, il nome dell'autorità emittente e la chiave privata dell'autorità emittente per contattare il Microsoft Azure Active Directory Access Control (anche noto come Servizio di controllo di accesso o ACS) e ottenere un token SWT (Simple Web Token) per accedere alle risorse dello spazio dei nomi servizio di Service Bus.

  • Viene creata una coda, viene inviato un messaggio alla coda e viene letto il messaggio nella coda.

  • Vengono creati un argomento e una sottoscrizione dell'argomento, quindi viene inviato e letto il messaggio dalla sottoscrizione.

  • Vengono recuperate tutte le informazioni sulla coda, sull'argomento e sulla sottoscrizione, incluse le regole di sottoscrizione, da Service Bus dello spazio dei nomi servizio.

  • Vengono quindi eliminate le risorse della coda, dell'argomento e della sottoscrizione.

Poiché il servizio è un servizio Web di tipo REST, non sono coinvolti tipi speciali dal momento che lo scambio prevede l'utilizzo di stringhe. Il progetto di Visual Studio pertanto non deve creare riferimenti oltre a quelli predefiniti. Se tuttavia nella configurazione sono stati modificati i valori predefiniti, potrebbe essere necessario aggiungere alcuni riferimenti di base al codice.

Dopo aver ottenuto lo spazio dei nomi servizio e le credenziali nel passaggio 1, il passaggio successivo consiste nel creare un'applicazione console di Visual Studio di base.

  1. Aprire Visual Studio 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 selezionare Visual C# (se Visual C# non è visibile, cercare in Altri linguaggi), selezionare il modello Applicazione console, quindi denominarlo Microsoft.ServiceBus.Samples. Utilizzare il valore predefinito nel campo Percorso. Fare clic su OK per creare il progetto.

  3. Per un progetto C#, in Visual Studio verrà creato un file denominato Program.cs. Si tratta di una classe contenente un metodo vuoto denominato Main(). Tale metodo è necessario per la corretta compilazione di un progetto di applicazione console ed è quindi opportuno lasciarlo all'interno del progetto.

  4. Verificare che le istruzioni using corrispondano a quanto riportato di seguito:

    using System;
    using System.Collections.Specialized;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Xml;
    
  5. Se necessario, rinominare lo spazio dei nomi servizio per il programma cambiando il valore predefinito di Visual Studio in Microsoft.ServiceBus.Samples.

  6. All'interno della classe Program aggiungere le seguenti variabili globali:

    static string serviceNamespace;
    static string baseAddress;
    static string token;
    const string sbHostName = "servicebus.windows.net";
    const string acsHostName = "accesscontrol.windows.net";
    
  7. All'interno del metodo Main() copiare il seguente codice:

    Console.Write("Enter your service namespace: ");
    serviceNamespace = Console.ReadLine();
    
    Console.Write("Enter your issuer name: ");
    string issuerName = Console.ReadLine();
    
    Console.Write("Enter your issuer secret: ");
    string issuerSecret = Console.ReadLine();
    
    baseAddress = "https://" + serviceNamespace + "." + sbHostName + "/";
    try
    {
        // Get a SWT token from the Access Control Service, given the issuerName and issuerSecret values.
        token = GetToken(issuerName, issuerSecret);
    
        string queueName = "Queue" + Guid.NewGuid().ToString();
    
        // Create and put a message in the queue using the SWT token.
        CreateQueue(queueName, token);
        SendMessage(queueName, "msg1");
        string msg = ReceiveAndDeleteMessage(queueName);
    
        string topicName = "Topic" + Guid.NewGuid().ToString();
        string subscriptionName = "Subscription" + Guid.NewGuid().ToString();
        CreateTopic(topicName);
        CreateSubscription(topicName, subscriptionName);
        SendMessage(topicName, "msg2");
    
        // Wait for messages to post:
        //System.Threading.Thread.Sleep(500);
        Console.WriteLine(ReceiveAndDeleteMessage(topicName + "/Subscriptions/" + subscriptionName));
    
        // Get an Atom feed with all the queues in the namespace
        Console.WriteLine(GetResources("$Resources/Queues"));
    
        // Get an Atom feed with all the topics in the namespace
        Console.WriteLine(GetResources("$Resources/Topics"));
    
        // Get an Atom feed with all the subscriptions for the topic we just created
        Console.WriteLine(GetResources(topicName + "/Subscriptions"));
    
        // Get an Atom feed with all the rules for the topic and subscritpion we just created
        Console.WriteLine(GetResources(topicName + "/Subscriptions/" + subscriptionName + "/Rules"));
    
        // Delete the queue we created
        DeleteResource(queueName);
    
        // Delete the topic we created
        DeleteResource(topicName);
    
        // Get an Atom feed with all the topics in the namespace, it shouldn't have the one we created now
        Console.WriteLine(GetResources("$Resources/Topics"));
    
        // Get an Atom feed with all the queues in the namespace, it shouldn't have the one we created now
        Console.WriteLine(GetResources("$Resources/Queues"));
    }
    catch (WebException we)
    {
        using (HttpWebResponse response = we.Response as HttpWebResponse)
        {
            if (response != null)
            {
                Console.WriteLine(new StreamReader(response.GetResponseStream()).ReadToEnd());
            }
            else
            {
                Console.WriteLine(we.ToString());
            }
        }
    }
    
    Console.WriteLine("\nPress ENTER to exit.");
    Console.ReadLine();
    
    

Mostra:
© 2014 Microsoft