SignalR v2 avec un équilibreur de charge
Je suis assez nouveau à SignalR et ont été en passant par quelques tutoriels que j'ai été chargé de la mise à niveau de notre implémentation actuelle.
Nous avons un ASP.NET MVC de l'application qui utilise SignalR (version 1.x). L'application est dans notre F5 à charge équilibrée environnement de cloud. Donc, nous avons plusieurs sites (pour le compte de différents clients) en utilisant le même programme d'équilibrage de charge. Pour faire de la SignalR appels côté serveur, nous utilisons la HubConnection
de la Microsoft.ASPNET.SignalR.Client espace de noms et de créer un proxy comme ceci (exemple complet ici):
var hubConnection = new HubConnection("http://www.contoso.com/");
IHubProxy stockTickerHubProxy = hubConnection.CreateHubProxy("StockTickerHub");
stockTickerHubProxy.On<Stock>("UpdateStockPrice", stock => Console.WriteLine("Stock update for {0} new price {1}", stock.Symbol, stock.Price));
await hubConnection.Start();
Où http://contoso.com/
est le client en cours de l'URL du site.
Nous sommes à la recherche à la mise à niveau vers la dernière SignalR (version 2.x) et je me demande si c'est nécessaire, de même utiliser le HubConnection
. Même si l'article ci-dessus spécifie la version 2, il est mentionné:
Ce document fournit une introduction à l'utilisation des plaques tournantes de l'API pour SignalR la version 2 .NET clients, tels que Windows Store (WinRT), WPF, Silverlight, et les applications de console.
C'est une application web avec une classe ordinaire de la bibliothèque back-end pour l'accès aux données. En prenant un coup d'oeil à ce tutoriel, je ne vois rien sur HubConnection
(il ne mentionne pas l'équilibrage de la charge). Considérons la suite, du Chat tutoriel:
public class ChatHub : Hub
{
public void Send(string name, string message)
{
//Call the addNewMessageToPage method to update clients.
Clients.All.addNewMessageToPage(name, message);
}
}
Puis, dans démarrage de windows.cs:
public class Startup
{
public void Configuration(IAppBuilder app)
{
//Any connection or hub wire up and configuration should go here
app.MapSignalR();
}
}
Donc ma question est, sommes-nous à l'aide de SignalR correctement? Si non, quelles sont les considérations/modifications doivent être faites lors de l'exécution d'une charge équilibrée application qui utilise SignalR (v2.x)? Je n'ai pas été en mesure de trouver beaucoup concernant l'équilibrage de la charge, etc.
Ou est-ce un travail pour Les groupes?
OriginalL'auteur lhan | 2014-10-22
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de changer quoi que ce soit d'ordre structurel. Jetez un oeil à la signalr redis scaleout, ou de toute autre scaleout option. Fondamentalement, vous avez besoin pour installer un paquet supplémentaire et ms opentech redis à faire de l'équilibrage de la charge. Ainsi, le scaleout fera en sorte que chaque demande est envoyée sur le bus de message, de faire plusieurs serveurs possible.
HubConnection
de la logique et de la remplacer par laChatHub
logique dans ma 2ème exemple, si je vais courir dans tous les problèmes.Donc ce qui sont que vous essayez de faire? La communication entre les serveurs à charge équilibrée par l'intermédiaire d'un hubconnection?
Pas nécessairement entre l'équilibrage de charge des serveurs, mais à partir d'équilibrage de charge des serveurs pour le client. Je suis curieux de savoir si le hub de connexion et proxy sont nécessaires.
Je suis à la recherche à l'échelle w/ sql server maintenant: asp.net/signalr/overview/performance/scaleout-with-sql-server il semble possible que nous sommes déjà à l'aide de sql server.
Vous utilisez le proxy .net client, alors pourquoi voudriez-vous utiliser un .net client sur le serveur? En d'autres termes: non, c'est pas nescessary. Vous utilisez le hub sur le serveur et d'un proxy (ou javascript .nette) sur le côté client. Qui n'a rien à voir avec l'équilibrage de charge. Vous avez besoin d'un service de bus entre vos serveurs avec signalr d'autre, ça ne marchera pas. Donc oui, redis est nescessary et assez facile à mettre en place. Vous pouvez également opter pour sql scaleout mais qui ne fonctionne pas très bien. Si vous êtes sur azure, vous pouvez utiliser azure service bus.
OriginalL'auteur Elger Mensonides