Масштабирование SignalR с помощью служебной шины Azure (SignalR 1.x)

Патрик Флетчер

Предупреждение

Эта документация не подходит для последней версии SignalR. Ознакомьтесь с ASP.NET Core SignalR.

В этом руководстве вы развернете приложение SignalR в веб-роли Windows Azure, используя служебную шину для распространения сообщений в каждый экземпляр роли.

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

Предварительные требования:

Служебная шина также совместима со служебной шиной для Windows Server версии 1.1. Однако она несовместима с версией 1.0 служебной шины для Windows Server.

Цены

Служебная шина использует разделы для отправки сообщений. Последние сведения о ценах см. в разделе Служебная шина. На момент написания этой статьи вы можете отправлять 1 000 000 сообщений в месяц менее чем за 1 долл. США. Обратная панель отправляет сообщение служебной шины для каждого вызова метода концентратора SignalR. Существуют также некоторые управляющие сообщения для подключений, отключений, присоединения к группам или выхода из них и т. д. В большинстве приложений большая часть трафика сообщений будет составлять вызовы методов концентратора.

Общие сведения

Прежде чем мы приступим к подробному руководству, ознакомьтесь с кратким обзором того, что вы будете делать.

  1. Используйте портал Azure Windows, чтобы создать новое пространство имен служебной шины.

  2. Добавьте в приложение следующие пакеты NuGet:

  3. Создайте приложение SignalR.

  4. Добавьте следующий код в Global.asax, чтобы настроить объединителю:

    protected void Application_Start()
    {
        string connectionString = "Service Bus connection string";
        GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName");
    
        RouteTable.Routes.MapHubs();
        // ...
    }
    

Для каждого приложения выберите другое значение "YourAppName". Не используйте одно и то же значение в нескольких приложениях.

Создание служб Azure

Создайте облачную службу, как описано в статье Создание и развертывание облачной службы. Выполните действия, описанные в разделе "Практическое руководство. Создание облачной службы с помощью быстрого создания". Для работы с этим руководством вам не нужно отправлять сертификат.

Снимок экрана: область

Создайте новое пространство имен служебной шины, как описано в разделе Использование разделов и подписок служебной шины. Выполните действия, описанные в разделе "Создание пространства имен службы".

Снимок экрана: экран добавления нового пространства имен с записями, введенными в полях Namespace Name (Имя пространства имен) и Region (Регион).

Примечание

Обязательно выберите тот же регион для облачной службы и пространства имен служебной шины.

Создание проекта Visual Studio

Запустите Visual Studio. В меню Файл выберите Новый проект.

В диалоговом окне Новый проект разверните узел Visual C#. В разделе Установленные шаблоны выберите Облако , а затем — Облачная служба Windows Azure. Оставьте значение по умолчанию платформа .NET Framework 4.5. Присвойте приложению имя ChatService и нажмите кнопку ОК.

Снимок экрана: экран

В диалоговом окне Новая облачная служба Windows Azure выберите ASP.NET веб-роль MVC 4. Нажмите кнопку со стрелкой вправо (>), чтобы добавить роль в решение.

Наведите указатель мыши на новую роль, чтобы увидеть значок карандаша. Щелкните этот значок, чтобы переименовать роль. Назовите роль SignalRChat и нажмите кнопку ОК.

Снимок экрана: экран

В мастере создания проекта ASP.NET MVC 4 выберите Интернет-приложение. Нажмите кнопку ОК. Мастер проектов создает два проекта:

  • ChatService. Этот проект является приложением Windows Azure. Он определяет роли Azure и другие параметры конфигурации.
  • SignalRChat. Этот проект является ASP.NET проекта MVC 4.

Создание приложения чата SignalR

Чтобы создать приложение чата, выполните действия, описанные в руководстве начало работы с SignalR и MVC 4.

Используйте NuGet для установки необходимых библиотек. В меню Сервис выберите Диспетчер пакетов NuGet, а затем консоль диспетчера пакетов. В окне Консоль диспетчера пакетов введите следующие команды:

Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR.ServiceBus

-ProjectName Используйте параметр , чтобы установить пакеты в ASP.NET проекта MVC, а не в проект Windows Azure.

Настройка объединителейной панели

В файле Global.asax приложения добавьте следующий код:

protected void Application_Start()
{
    string connectionString = "";
    GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");  

    RouteTable.Routes.MapHubs();
}

Теперь необходимо получить строку подключения к служебной шине. В портал Azure выберите созданное пространство имен служебной шины и щелкните значок Ключ доступа.

Снимок экрана: параметры и значки

Скопируйте строку подключения в буфер обмена, а затем вставьте ее в переменную connectionString .

Снимок экрана: экран

string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";

Развернуть в Azure

В Обозреватель решений разверните папку Роли в проекте ChatService.

Снимок экрана: дерево Обозреватель решений с параметром Signal R Chat, содержащимся в папке Roles проекта службы чата.

Щелкните правой кнопкой мыши роль SignalRChat и выберите Свойства. Перейдите на вкладку Конфигурация . В разделе Экземпляры выберите 2. Вы также можете задать для размера виртуальной машины значение Слишком маленький.

Снимок экрана: раздел

Сохраните изменения.

В Обозреватель решений щелкните правой кнопкой мыши проект ChatService. Нажмите Публиковать.

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

Если это ваша первая публикация в Windows Azure, необходимо скачать учетные данные. В мастере публикации щелкните "Войти, чтобы скачать учетные данные". Появится запрос на вход в windows портал Azure и скачивание файла параметров публикации.

Снимок экрана публикации Windows приложение Azure на вкладке Вход с выделенной ссылкой Вход для скачивания учетных данных.

Нажмите кнопку Импорт и выберите скачанный файл параметров публикации.

Щелкните Далее. В диалоговом окне Параметры публикации в разделе Облачная служба выберите созданную ранее облачную службу.

Снимок экрана публикации Windows приложение Azure вкладки

Нажмите кнопку Опубликовать. Развертывание приложения и запуск виртуальных машин может занять несколько минут.

Теперь при запуске приложения чата экземпляры роли взаимодействуют через Служебная шина Azure, используя раздел служебной шины. Раздел — это очередь сообщений, которая позволяет нескольким подписчикам.

Объединитедняя панель автоматически создает раздел и подписки. Чтобы просмотреть подписки и действия с сообщениями, откройте портал Azure, выберите пространство имен служебной шины и щелкните "Темы".

Снимок экрана: выбранное поле

Чтобы действие сообщения отображалось на панели мониторинга, потребуется несколько минут.

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

SignalR управляет временем существования раздела. Пока приложение развернуто, не пытайтесь вручную удалить разделы или изменить параметры раздела.