Saltar al contenido

SignalR: ¿Por qué elegir Hub vs. Conexión persistente?

Nuestro team de expertos luego de muchos días de investigación y recopilar de información, dimos con la solución, nuestro deseo es que resulte útil para ti para tu proyecto.

Solución:

Por lo que veo en la sección Conexión y concentradores, parece que los concentradores proporcionan un sistema de temas que se superpone a las conexiones persistentes de nivel inferior.

Del comentario altamente votado a continuación:

Parcialmente correcto. También puede obtener temas o grupos en conexiones persistentes. La gran diferencia es enviar diferentes tipos de mensajes. Por ejemplo, tiene diferentes tipos de mensajes y desea enviar diferentes tipos de cargas útiles. Con conexiones persistentes, debe incrustar el tipo de mensaje en la carga útil (consulte el ejemplo sin procesar), pero los concentradores le brindan la capacidad de realizar RPC a través de una conexión (le permite llamar a métodos en el cliente desde el servidor y desde el servidor al cliente) . Otra gran cosa es la vinculación de modelos. Los concentradores le permiten pasar parámetros fuertemente tipados a métodos.

El ejemplo utilizado en la documentación utiliza una metáfora de sala de chat, donde los usuarios pueden unirse a una sala específica y luego solo recibir mensajes de otros usuarios en la misma sala. De manera más genérica, su código se suscribe a un tema y luego solo recibe mensajes publicados en ese tema. Con las conexiones persistentes recibirías todos los mensajes.

Podría crear fácilmente su propio sistema de temas sobre las conexiones persistentes, pero en este caso, el equipo de SignalR ya hizo el trabajo por usted.

La principal diferencia es que no puede hacer RPC con PersistentConnection, solo puede enviar datos sin procesar. Entonces, en lugar de enviar mensajes desde el servidor como este

Clients.All.addNewMessageToPage(name, message);

tendrías que enviar un objeto con Connection.Broadcast() o Connection.Send() y luego el cliente tendría que decidir qué hacer con eso. Podría, por ejemplo, enviar un objeto como este:

Connection.Broadcast(new 
    method: "addNewMessageToPage",
    name: "Albert",
    message: "Hello"
);

Y en el cliente, en lugar de simplemente definir

yourHub.client.addNewMessageToPage = function(name, message)  
    // things and stuff
;

tendrías que agregar una devolución de llamada para manejar todos los mensajes entrantes:

function addNewMessageToPage(name, message) 
    // things and stuff


connection.received(function (data) 
    var method = data.method;

    window[method](data.name, data.message);
);

Tendría que hacer el mismo tipo de despacho en el lado del servidor en el OnReceived método. También tendrías que deserializar los datos. string allí en lugar de recibir los objetos fuertemente tipados como lo hace con los métodos de concentrador.

No hay muchas razones para elegir PersistentConnection sobre Hubs. Una de las razones por las que soy consciente es que es posible enviar JSON preserializado a través de PersistentConnection, lo que no se puede hacer con concentradores. En ciertas situaciones, esto podría ser un beneficio de rendimiento relevante.

Aparte de eso, vea esta cita de la documentación:

Elegir un modelo de comunicación

La mayoría de las aplicaciones deberían usar la API de Hubs. La API de conexiones podría usarse en las siguientes circunstancias:

  • Es necesario especificar el formato del mensaje real enviado.

  • El desarrollador prefiere trabajar con un modelo de mensajería y despacho en lugar de un modelo de invocación remota.

  • Se está portando una aplicación existente que usa un modelo de mensajería para usar SignalR.

Según la estructura de su mensaje, también puede obtener pequeños beneficios de rendimiento al usar PersistentConnection.

Es posible que desee echar un vistazo a las muestras de SignalR, específicamente esto aquí.

Hay dos formas de usar SignalR: puede acceder a él en un nivel bajo anulando su PersistentConnection clase, que te da mucho control sobre ella; o puede dejar que SignalR haga todo el trabajo pesado por usted, usando los ‘Hubs’ de alto nivel.

Te mostramos comentarios y puntuaciones

Si te animas, eres capaz de dejar un artículo acerca de qué te ha impresionado de este artículo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *