SignalR (II): SignalR en Windows Azure


Problema

Al trabajar en Azure, cuando necesitamos trabajar con múltiples instancias, SignalR no puede registrar el hub de comunicación dado que las peticiones de conexión pueden ir independiente a las diferentes instancias.
Afortunadamente existe un add-on de Signal-R que permite trabajar en Azure; se basa en la utilización del servicio de bus que provee el propio Azure. De esta manera al registrarse una conexión esta se sincroniza para las diferentes instancias.

Instalación

  1. Crear el servicio Service Bus en la consola de Azure

    Opción para Data de Alta un Tema de Service Bus en Azure

  2. El add-on lo tenemos disponible en GitHub desde donde podemos descargarlo. Aunque la forma más fácil de instalarla es desde la consola de Nutget, mediante el siguiente comando:
    Install-Package SignalR.WindowsAzureServiceBus

    Instalar signalR.WindowsAzureServiceBus vía NutGet

  3. En el app_start de la aplicación registramos nuestra configuración de Azure Service Bus con el AddOn.
            if (RoleEnvironment.IsAvailable)
            {
    			var roleName = RoleEnvironment.CurrentRoleInstance.Role.Name;
    			if (RoleEnvironment.Roles[roleName].Instances.Count > 1)
    			{
    
    				const string serviceBusNamespace = "BusNamespace";
    				const string serviceBusAccount = "BusAccount";
    				const string serviceBusAccountKey = "BusAccountKey";
    				const string topicPathPrefix = "signalr";
    				const int numberOfTopics = 1;
    
    				SignalR.GlobalHost.DependencyResolver.UseWindowsAzureServiceBus(
    					serviceBusNamespace, /* the service bus namespace prefix */
    					serviceBusAccount, /* "owner" or some other account */
    					serviceBusAccountKey, /* the key, which can be copied from the Windows Azure portal */
    					topicPathPrefix, /* the prefix applied to the name of each topic used */
    					numberOfTopics /* how many topics across which messages will be sharded */
    					);
                }
            }
    

    Únicamente lo registramos si estamos en Azure y tenemos más de una instancia deployada, de esta manera evitamos realizar peticiones al Service Bus sino es necesario.

  4. Anuncios
Esta entrada fue publicada en Azure, Desarrollo, SignalR y etiquetada . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s