Scale-out de SignalR avec Azure Service Bus (SignalR 1.x)

par Patrick Fletcher

Avertissement

Cette documentation ne concerne pas la dernière version de SignalR. Consultez ASP.NET Core SignalR.

Dans ce tutoriel, vous allez déployer une application SignalR sur un rôle Web Windows Azure, à l’aide du backplane Service Bus pour distribuer des messages à chaque rôle instance.

Diagramme illustrant la relation entre la rubrique d’espace de noms Service Bus, les rôles web et les ordinateurs et comptes disponibles.

Configuration requise :

Le fond de panier Service Bus est également compatible avec Service Bus pour Windows Server, version 1.1. Toutefois, il n’est pas compatible avec la version 1.0 de Service Bus pour Windows Server.

Tarifs

Le fond de panier Service Bus utilise des rubriques pour envoyer des messages. Pour obtenir les informations tarifaires les plus récentes, consultez Service Bus. Au moment de la rédaction du présent article, vous pouvez envoyer 1 000 000 messages par mois pour moins de 1 $. Le backplane envoie un message Service Bus pour chaque appel d’une méthode de hub SignalR. Il existe également des messages de contrôle pour les connexions, les déconnexions, la jonction ou la sortie de groupes, etc. Dans la plupart des applications, la majorité du trafic de messages sera des appels de méthode hub.

Vue d’ensemble

Avant d’accéder au tutoriel détaillé, voici une vue d’ensemble rapide de ce que vous allez faire.

  1. Utilisez le Portail Azure Windows pour créer un espace de noms Service Bus.

  2. Ajoutez ces packages NuGet à votre application :

  3. Créez une application SignalR.

  4. Ajoutez le code suivant à Global.asax pour configurer le backplane :

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

Pour chaque application, choisissez une valeur différente pour « YourAppName ». N’utilisez pas la même valeur dans plusieurs applications.

Créer les services Azure

Créez un service cloud, comme décrit dans Création et déploiement d’un service cloud. Suivez les étapes de la section « Procédure : créer un service cloud à l’aide de la création rapide ». Pour ce tutoriel, vous n’avez pas besoin de charger un certificat.

Capture d’écran du volet NOUVEAU avec l’option service cloud et l’icône en surbrillance dans l’application, ainsi qu’un cercle rouge.

Créez un espace de noms Service Bus, comme décrit dans Rubriques/abonnements Service Bus. Suivez les étapes de la section « Créer un espace de noms de service ».

Capture d’écran de l’écran Ajouter un nouvel espace de noms avec les entrées entrées dans les champs Nom de l’espace de noms et Région.

Notes

Veillez à sélectionner la même région pour le service cloud et l’espace de noms Service Bus.

Créer le projet Visual Studio

Démarrez Visual Studio. Dans le menu Fichier, cliquez sur Nouveau projet.

Dans la boîte de dialogue Nouveau projet , développez Visual C#. Sous Modèles installés, sélectionnez Cloud , puis Windows Azure Cloud Service. Conservez le .NET Framework 4.5 par défaut. Nommez l’application ChatService et cliquez sur OK.

Capture d’écran de l’écran Nouveau projet avec l’option Visual C# du service cloud Windows Azure mise en évidence.

Dans la boîte de dialogue Nouveau service cloud Azure Windows , sélectionnez ASP.NET rôle web MVC 4. Cliquez sur le bouton flèche droite (>) pour ajouter le rôle à votre solution.

Pointez la souris sur le nouveau rôle, afin que l’icône de crayon soit visible. Cliquez sur cette icône pour renommer le rôle. Nommez le rôle « SignalRChat », puis cliquez sur OK.

Capture d’écran de l’écran Nouveau service cloud Azure Windows avec l’option Signal R Chat mise en évidence dans le volet solution du service cloud Windows Azure.

Dans l’Assistant Nouveau projet ASP.NET MVC 4 , sélectionnez Application Internet. Cliquez sur OK. L’Assistant Projet crée deux projets :

  • ChatService : ce projet est l’application Windows Azure. Il définit les rôles Azure et d’autres options de configuration.
  • SignalRChat : ce projet est votre ASP.NET projet MVC 4.

Créer l’application SignalR Chat

Pour créer l’application de conversation, suivez les étapes du didacticiel Prise en main avec SignalR et MVC 4.

Utilisez NuGet pour installer les bibliothèques requises. Dans le menu Outils , sélectionnez Gestionnaire de package NuGet, puis console du gestionnaire de package. Dans la fenêtre Console du Gestionnaire de package, entrez les commandes suivantes :

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

Utilisez l’option -ProjectName pour installer les packages sur le ASP.NET projet MVC, plutôt que sur le projet Azure Windows.

Configurer le backplane

Dans le fichier Global.asax de votre application, ajoutez le code suivant :

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

    RouteTable.Routes.MapHubs();
}

Vous devez maintenant obtenir votre chaîne de connexion Service Bus. Dans le Portail Azure, sélectionnez l’espace de noms Service Bus que vous avez créé, puis cliquez sur l’icône Clé d’accès.

Capture d’écran des options et icônes Créer, Clé d’accès et Supprimer dans l’espace de noms Service Bus avec un focus sur l’option Créer.

Copiez la chaîne de connexion dans le Presse-papiers, puis collez-la dans la variable connectionString .

Capture d’écran de l’écran Connexion de la clé d’accès à votre espace de noms, montrant les champs Chaîne de connexion, Émetteur par défaut et Clé par défaut.

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

Déployer sur Azure

Dans Explorateur de solutions, développez le dossier Rôles à l’intérieur du projet ChatService.

Capture d’écran de l’arborescence Explorateur de solutions montrant l’option Signal R Chat contenue dans le dossier Rôles du projet Chat Service.

Cliquez avec le bouton droit sur le rôle SignalRChat et sélectionnez Propriétés. Sélectionnez l’onglet Configuration . Sous Instances, sélectionnez 2. Vous pouvez également définir la taille de la machine virtuelle sur Extra Small.

Capture d’écran de la section Instances de l’onglet Configuration, montrant un 2 entré dans le champ Nombre d’instances et le champ Taille V M défini sur Extra Small.

Enregistrez les modifications.

Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet ChatService. Sélectionnez Publier.

Capture d’écran du projet de service de conversation de l’écran Explorateur de solutions, avec un menu déroulant clic droit montrant la publication... Option.

S’il s’agit de votre première publication dans Windows Azure, vous devez télécharger vos informations d’identification. Dans l’Assistant Publication , cliquez sur « Se connecter pour télécharger les informations d’identification ». Cela vous invite à vous connecter au Portail Azure Windows et à télécharger un fichier de paramètres de publication.

Capture d’écran de l’onglet De connexion de l’écran Publier l’Azure Application Windows avec le lien Se connecter pour télécharger les informations d’identification mis en évidence.

Cliquez sur Importer et sélectionnez le fichier de paramètres de publication que vous avez téléchargé.

Cliquez sur Suivant. Dans la boîte de dialogue Paramètres de publication, sous Service cloud, sélectionnez le service cloud que vous avez créé précédemment.

Capture d’écran de l’onglet Paramètres de l’écran Publier l’Azure Application Windows, montrant le champ Service cloud sous l’onglet Paramètres communs.

Cliquez sur Publier. Le déploiement de l’application et le démarrage des machines virtuelles peuvent prendre quelques minutes.

À présent, lorsque vous exécutez l’application de conversation, les instances de rôle communiquent via Azure Service Bus, à l’aide d’une rubrique Service Bus. Une rubrique est une file d’attente de messages qui autorise plusieurs abonnés.

Le backplane crée automatiquement la rubrique et les abonnements. Pour afficher les abonnements et l’activité des messages, ouvrez le Portail Azure, sélectionnez l’espace de noms Service Bus, puis cliquez sur « Rubriques ».

Capture d’écran du champ Service cloud sélectionné qui est maintenant renseigné dans le Portail Azure, avec le champ Nom du service cloud mis en surbrillance.

L’affichage de l’activité de message dans le tableau de bord prend quelques minutes.

Capture d’écran du tableau de bord Portail Azure affichant l’activité des messages chronologie, montrant une ligne bleue et violette pour indiquer différents historiques de messages.

SignalR gère la durée de vie de la rubrique. Tant que votre application est déployée, n’essayez pas de supprimer manuellement des rubriques ou de modifier les paramètres de la rubrique.