Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
Эта документация не подходит для последней версии SignalR. Взгляните на ASP.NET Core SignalR.
В этом руководстве вы развернете приложение SignalR в веб-роли Windows Azure, используя шину сообщений Service Bus для распределения сообщений по каждому экземпляру роли. (Вы также можете использовать шину Service Bus с веб-приложениями в Службе приложений Azure.)
Prerequisites:
- Учетная запись Windows Azure.
- Пакет SDK для Windows Azure.
- Visual Studio 2012 или 2013.
Серверная планка служебной шины также совместима с служебной шиной для Windows Server версии 1.1. Однако она несовместима с версией 1.0 служебной шины для Windows Server.
Цены
Шина данных служебной шины использует топики для отправки сообщений. Последние сведения о ценах см. в Service Bus. На момент написания этой статьи вы можете отправлять 1000 000 сообщений в месяц менее чем на 1 долл. США. Коммутационная панель отправляет сообщение служебной шины для каждого вызова метода узла SignalR. Существуют также некоторые контрольные сообщения для подключений, отключений, присоединения или выхода из групп и т. д. В большинстве приложений большинство трафика сообщений будет вызовами методов концентратора.
Обзор
Прежде чем ознакомиться с подробным руководством, ознакомьтесь с кратким обзором того, что вы будете делать.
Используйте портал Windows Azure для создания нового пространства имен служебной шины.
Добавьте эти пакеты NuGet в приложение:
Создайте приложение SignalR.
Добавьте следующий код в Startup.cs для настройки подложки:
public void Configuration(IAppBuilder app) { string connectionString = "Service Bus connection string"; GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName"); app.MapSignalR(); // ... }
Этот код настраивает бэкплейн со значениями по умолчанию для TopicCount и MaxQueueLength. Сведения об изменении этих значений см. в разделе "Производительность SignalR: Метрики масштабирования".
Для каждого приложения выберите другое значение "YourAppName". Не используйте одно и то же значение в нескольких приложениях.
Создание служб Azure
Создайте облачную службу, как описано в руководстве по созданию и развертыванию облачной службы. Выполните действия, описанные в разделе "Практическое руководство. Создание облачной службы с помощью быстрого создания". В этом руководстве не требуется отправлять сертификат.
Создайте новое пространство имен Service Bus, как описано в разделе "Использование разделов и подписок Service Bus". Выполните действия, описанные в разделе "Создание пространства имен службы".
Замечание
Выберите тот же регион для облачной службы и пространства имен служебной шины.
Создание проекта Visual Studio
Запустите Visual Studio. В меню "Файл" нажмите кнопку "Создать проект".
В диалоговом окне Создать проект разверните Visual C#. В разделе "Установленные шаблоны" выберите "Облако " и выберите "Облачная служба Windows Azure". Сохраните .NET Framework 4.5 по умолчанию. Назовите приложение ChatService и нажмите кнопку "ОК".
В диалоговом окне "Новая облачная служба Windows Azure" выберите ASP.NET веб-роль. Нажмите кнопку со стрелкой вправо (>), чтобы добавить роль в ваше решение.
Наведите указатель мыши на новую роль, чтобы значок карандаша был видимым. Щелкните этот значок, чтобы переименовать роль. Назовите роль SignalRChat и нажмите кнопку "ОК".
В диалоговом окне "Создать ASP.NET проект" выберите MVC и нажмите кнопку "ОК".
Мастер проектов создает два проекта:
- ChatService: этот проект является приложением Windows Azure. Он определяет роли Azure и другие параметры конфигурации.
- SignalRChat: этот проект является вашим проектом ASP.NET MVC 5.
Создание приложения чата SignalR
Чтобы создать приложение чата, выполните действия, описанные в руководстве по началу работы с SignalR и MVC 5.
Используйте NuGet для установки необходимых библиотек. В меню "Сервис" выберите диспетчер пакетов NuGet, а затем консоль диспетчера пакетов. В окне консоли диспетчера пакетов введите следующие команды:
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR.ServiceBus
-ProjectName Используйте параметр для установки пакетов в проект ASP.NET MVC, а не проект Windows Azure.
Настройте заднюю панель
В файле Startup.cs приложения добавьте следующий код:
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
string connectionString = "";
GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");
app.MapSignalR();
}
Теперь необходимо получить строку подключения служебной шины. На портале Azure выберите созданное пространство имен служебной шины и щелкните значок ключа доступа.
Скопируйте строку подключения в буфер обмена, а затем вставьте ее в переменную connectionString .
string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";
Развертывание в Azure
В обозревателе решений разверните папку "Роли " в проекте ChatService.
Щелкните правой кнопкой мыши роль SignalRChat и выберите "Свойства". Перейдите на вкладку "Конфигурация". В разделе "Экземпляры" выберите 2. Вы также можете задать размер виртуальной машины Экстра Маленький.
Сохраните изменения.
В обозревателе решений щелкните правой кнопкой мыши проект ChatService. Выберите Опубликовать.
Если вы впервые публикуете в Windows Azure, необходимо скачать свои учетные данные. В мастере публикации нажмите кнопку "Войти, чтобы скачать учетные данные". При этом вам будет предложено войти на портал Windows Azure и скачать файл параметров публикации.
Щелкните "Импортировать " и выберите скачанный файл параметров публикации.
Нажмите кнопку Далее. В диалоговом окне "Параметры публикации " в разделе "Облачная служба" выберите созданную ранее облачную службу.
Нажмите кнопку Опубликовать. Развертывание приложения и запуск виртуальных машин может занять несколько минут.
Теперь при запуске приложения чата экземпляры ролей взаимодействуют через служебную шину Azure, используя тему служебной шины. Тема — это очередь сообщений, которую могут использовать несколько подписчиков.
Backplane автоматически создает топик и подписки. Чтобы просмотреть действия подписок и сообщений, откройте портал Azure, выберите пространство имен служебной шины и щелкните "Темы".
Появление активности сообщения на панели мониторинга может занять несколько минут.
SignalR управляет временем существования темы. Пока приложение развернуто, не пытайтесь вручную удалять разделы или изменять параметры раздела.
Troubleshooting
System.InvalidOperationException "Единственный поддерживаемый IsolationLevel — 'IsolationLevel.Serializable'."
Эта ошибка может возникнуть, если для операции установлен уровень транзакции, отличный от Serializable. Убедитесь, что операции не выполняются с другими уровнями транзакций.