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

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

Обновлено: Февраль 2015 г.

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

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

Код в этом учебном пособии:

  • на основе пространство имен службы и ключа подписанного URL-адреса (SAS) осуществляется доступ к ресурсамСлужебная шина пространство имен службы.

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

  • Создание раздела, оформление подписки на этот раздел, передача и чтение сообщения из подписки.

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

  • После этого ресурсы очередей, раздела и подписок удаляются.

Поскольку данная служба является веб-службой типа REST, обмен осуществляется исключительно посредством строк без применения специальных типов. Это означает, что проект Visual Studio не должен содержать ссылок, за исключением используемых по умолчанию; однако если в данной конфигурации значения по умолчанию изменены, может потребоваться добавить к коду некоторые основные ссылки .NET.

Получив пространство имен службы и учетные данные на шаге 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 SAS key: ");
    string SASKey = Console.ReadLine();
    
    baseAddress = "https://" + serviceNamespace + "." + sbHostName + "/";
    try
    {
        token = GetToken(“RootManageSharedAccessKey”, SASKey);
    
        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");
    
        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();
    
    

Показ:
© 2015 Microsoft