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

Шаг 2. Создание учетных данных для управления

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

Это второй шаг в учебнике по возможностям обмена сообщениями в Служебная шина. На этом шаге определяются операции управления, которые будут использоваться для создания безопасных учетных данных (совместно используемый секрет), с помощью которых выполняется проверка подлинности приложения.

  1. В этом руководстве все операции очереди размещаются в отдельном методе. Создайте метод Queue() в классе Program под методом Main(). Например:

    public static void Main(string[] args)
    {
    …}
    static void Queue()
    {
    }
    
    
  2. Следующий шаг состоит в создании совместно используемого секрета с помощью объекта TokenProvider. Метод создания принимает имя издателя и ключ, полученный в методе CollectUserInput(). Добавьте следующий код в метод Queue().

    static void Queue()
    {
        // Create management credentials
        TokenProvider credentials = TokenProvider.CreateSharedSecretTokenProvider(IssuerName, IssuerKey);
    }
    
    

  1. Создайте новый объект управления пространство имен службы с URI, содержащим в качестве аргументов имя пространство имен службы и учетные данные управления, полученные на последнем шаге. Добавьте следующий код непосредственно после кода, добавленного в предыдущем шаге:

    NamespaceManager namespaceClient = new NamespaceManager(ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty), credentials);
    

Пример

Код должен иметь приблизительно следующий вид.

namespace Microsoft.ServiceBus.Samples
{
    public class Program
    {

        private static DataTable issues;
        private static List<BrokeredMessage> MessageList;
        private static string ServiceNamespace;
        private static string IssuerName;
        private static string IssuerKey;

        public static void Main(string[] args)
        {
            // Collect user input
            CollectUserInput();

            // Populate test data
            issues = ParseCSVFile();
            MessageList = GenerateMessages(issues);

        }

        static void Queue()
        {

            // Create management credentials
                TokenProvider credentials = TokenProvider.CreateSharedSecretTokenProvider(IssuerName, IssuerKey);
            // Create namespace client
            NamespaceManager namespaceClient = new NamespaceManager(ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty), credentials);
        }

        static void CollectUserInput()
        {
            // User service namespace
            Console.Write("Please provide the service namespace to use: ");
            ServiceNamespace = Console.ReadLine();

            // Issuer name
            Console.Write("Please provide the issuer name to use: ");
            IssuerName = Console.ReadLine();

            // Issuer key
            Console.Write("Please provide the issuer key to use: ");
            IssuerKey = Console.ReadLine();
        }


       static List<BrokeredMessage> GenerateMessages(DataTable issues)
        {
            // Instantiate the brokered list object
            List<BrokeredMessage> result = new List<BrokeredMessage>();

            // Iterate through the table and create a brokered message for each row
            foreach (DataRow item in issues.Rows)
            {
                BrokeredMessage message = new BrokeredMessage();
                foreach (DataColumn property in issues.Columns)
                {
                    message.Properties.Add(property.ColumnName, item[property]);
                }
                result.Add(message);
            }
            return result;
        }

        static DataTable ParseCSVFile()
        {
            DataTable tableIssues = new DataTable("Issues");
            string path = @"..\..\data.csv";
            using (StreamReader readFile = new StreamReader(path))
            {
                string line;
                string[] row;

                // create the columns
                line = readFile.ReadLine();
                foreach (string columnTitle in line.Split(','))
                {
                    tableIssues.Columns.Add(columnTitle);
                }

                while ((line = readFile.ReadLine()) != null)
                {
                    row = line.Split(',');
                    tableIssues.Rows.Add(row);
                }
            }

        return tableIssues;
    }
}
}

На следующем этапе будет выполнено создание очереди, в которую будут отправляться сообщения.

Компиляция кода

  • В меню Построение в Visual Studio выберите команду Построить решение или нажмите клавишу F6, чтобы подтвердить правильность выполненной работы.

Показ:
© 2014 Microsoft