Экспорт (0) Печать
Развернуть все

Шаг 2. Создание клиента консоли

Обновлено: Январь 2014 г.

Это вторая из девяти задач, необходимых для создания базового приложения на основе REST для работы с очередями, публикациями или подписками, которое использует Шина службы Microsoft Azure.

Очереди Служебная шина позволяют хранить сообщения в очереди FIFO. Разделы и подписки следуют шаблону публикации и подписки. Вы создаете раздел, а затем — связанные с ним подписки. При отправке сообщений в раздел они передаются подписчикам раздела.

Код учебника:

  • Использует пространство имен службы, имя и ключ издателя для обращения к службе Microsoft Azure Active Directory Access Control (также называется Access Control Service или ACS) и получения простого веб-маркера (SWT) для доступа к ресурсам Служебная шина пространство имен службы.

  • Создает очередь, отправляет в нее сообщение и считывает его из очереди.

  • Создает раздел с подпиской, отправляет в раздел сообщение и считывает его из подписки.

  • Извлекает все сведения об очереди, разделе и подписке, включая правила подписки, из Служебная шина для вашего пространство имен службы.

  • Удаляет ресурсы очереди, раздела и подписки.

Так как это веб-служба REST, особых типов не используется. Для всех операций используются строки. Это значит, что в проект Visual Studio не требуется добавлять дополнительные ссылки, хотя в случае, если вы изменили параметры по умолчанию, в код может потребоваться добавить ссылки .

После получения пространство имен службы и учетных данных на шаге 1 следует создать простое консольное приложение Visual Studio.

  1. Откройте Visual Studio от имени администратора, щелкнув эту программу правой кнопкой мыши в меню Пуск и выбрав пункт Запуск от имени администратора.

  2. Создайте новый проект консольного приложения. Щелкните меню Файл и выберите пункты Создать и Проект. В диалоговом окне Новый проект выберите Visual C# (если элемент Visual C# не отображается, откройте список Другие языки), выберите шаблон Консольное приложение и назовите его Microsoft.ServiceBus.Samples. Используйте Расположение по умолчанию. Нажмите кнопку ОК, чтобы создать проект.

  3. Для проекта C# Visual Studio создает файл с именем Program.cs. Этот класс содержит пустой метод Main(), который требуется для правильного построения проекта консольного приложения. Таким образом, вы можете оставить его в проекте.

  4. Убедитесь, что операторы using имеют следующий вид.

    using System;
    using System.Collections.Specialized;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Xml;
    
  5. При необходимости переименуйте пространство имен службы для программы, изменив используемое по умолчанию в Visual Studio имя на Microsoft.ServiceBus.Samples.

  6. В классе Program добавьте следующие глобальные переменные:

    static string serviceNamespace;
    static string baseAddress;
    static string token;
    const string sbHostName = "servicebus.windows.net";
    const string acsHostName = "accesscontrol.windows.net";
    
  7. Скопируйте в метод Main() следующий код:

    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();
    
    

Показ:
© 2014 Microsoft