Масштабирование SignalR с помощью служебной шины Azure (SignalR 1.x)
Предупреждение
Эта документация не подходит для последней версии SignalR. Ознакомьтесь с ASP.NET Core SignalR.
В этом руководстве вы развернете приложение SignalR в веб-роли Windows Azure, используя служебную шину для распространения сообщений в каждый экземпляр роли.
Предварительные требования:
- Учетная запись Windows Azure.
- Пакет SDK Для Windows Azure.
- Visual Studio 2012.
Служебная шина также совместима со служебной шиной для Windows Server версии 1.1. Однако она несовместима с версией 1.0 служебной шины для Windows Server.
Цены
Служебная шина использует разделы для отправки сообщений. Последние сведения о ценах см. в разделе Служебная шина. На момент написания этой статьи вы можете отправлять 1 000 000 сообщений в месяц менее чем за 1 долл. США. Обратная панель отправляет сообщение служебной шины для каждого вызова метода концентратора SignalR. Существуют также некоторые управляющие сообщения для подключений, отключений, присоединения к группам или выхода из них и т. д. В большинстве приложений большая часть трафика сообщений будет составлять вызовы методов концентратора.
Общие сведения
Прежде чем мы приступим к подробному руководству, ознакомьтесь с кратким обзором того, что вы будете делать.
Используйте портал Azure Windows, чтобы создать новое пространство имен служебной шины.
Добавьте в приложение следующие пакеты NuGet:
Создайте приложение SignalR.
Добавьте следующий код в Global.asax, чтобы настроить объединителю:
protected void Application_Start() { string connectionString = "Service Bus connection string"; GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName"); RouteTable.Routes.MapHubs(); // ... }
Для каждого приложения выберите другое значение "YourAppName". Не используйте одно и то же значение в нескольких приложениях.
Создание служб Azure
Создайте облачную службу, как описано в статье Создание и развертывание облачной службы. Выполните действия, описанные в разделе "Практическое руководство. Создание облачной службы с помощью быстрого создания". Для работы с этим руководством вам не нужно отправлять сертификат.
Создайте новое пространство имен служебной шины, как описано в разделе Использование разделов и подписок служебной шины. Выполните действия, описанные в разделе "Создание пространства имен службы".
Примечание
Обязательно выберите тот же регион для облачной службы и пространства имен служебной шины.
Создание проекта 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.
Щелкните правой кнопкой мыши роль SignalRChat и выберите Свойства. Перейдите на вкладку Конфигурация . В разделе Экземпляры выберите 2. Вы также можете задать для размера виртуальной машины значение Слишком маленький.
Сохраните изменения.
В Обозреватель решений щелкните правой кнопкой мыши проект ChatService. Нажмите Публиковать.
Если это ваша первая публикация в Windows Azure, необходимо скачать учетные данные. В мастере публикации щелкните "Войти, чтобы скачать учетные данные". Появится запрос на вход в windows портал Azure и скачивание файла параметров публикации.
Нажмите кнопку Импорт и выберите скачанный файл параметров публикации.
Щелкните Далее. В диалоговом окне Параметры публикации в разделе Облачная служба выберите созданную ранее облачную службу.
Нажмите кнопку Опубликовать. Развертывание приложения и запуск виртуальных машин может занять несколько минут.
Теперь при запуске приложения чата экземпляры роли взаимодействуют через Служебная шина Azure, используя раздел служебной шины. Раздел — это очередь сообщений, которая позволяет нескольким подписчикам.
Объединитедняя панель автоматически создает раздел и подписки. Чтобы просмотреть подписки и действия с сообщениями, откройте портал Azure, выберите пространство имен служебной шины и щелкните "Темы".
Чтобы действие сообщения отображалось на панели мониторинга, потребуется несколько минут.
SignalR управляет временем существования раздела. Пока приложение развернуто, не пытайтесь вручную удалить разделы или изменить параметры раздела.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по