2012-02-15 20 views
10

Estoy explorando las opciones arquitectónicas de un proyecto que presentará actualizaciones en vivo (como Facebook) de actividades del usuario: inicios de sesión, fotos, etc. Dos componentes principales de la interfaz de usuario son una área de desplazamiento de actualización automática donde se enumerarán nuevas notificaciones (fotos, etc.) y una barra de herramientas que se actualizará con elementos como recuentos de mensajes actualizados, etc.Opciones para notificaciones y actualizaciones web en tiempo real usando Comet/XMPP vs tecnologías WebSocket en una pila de Microsoft?

Los candidatos para esto son las tecnologías Jabber/Comet/XMPP y WebSocket. campamento

Comet:

WebSockets campamento:

Dado que este la infraestructura existente es una pila de Microsoft, preferiría no introducir los servidores basados ​​en Java en la mezcla. Dicho esto, deja (muy atractivo) WebSync (Comet) y SuperWebSocket (WebSockets). Sin embargo, la integración de Pokein DLL es bastante transparente en un proyecto .Net también.

¿Hay alguna iniciativa de WebSocket de nivel de producción real para .Net? ¿Es demasiado pronto para adoptar WebSockets en una pila de Microsoft, y debería ir a favor de algo como Kazing?

Todavía estoy esperando un informe sobre los tipos y versiones de navegador de nuestra base de usuarios actual (verificando la compatibilidad con HTML5). Estoy sospechando que este número será bajo (base de usuarios más antigua). Si ese es el caso, la opción Comet sería la ganadora.

¿Cuáles son algunas otras cosas a considerar?

Mirando algunas de las iniciativas .Net como Sockets.IO y otros, estoy pensando que esto puede ser demasiado en su infancia, para aplicar a un sistema de producción a gran escala.

¿Puedo obtener algunos comentarios de cualquiera que haya utilizado alguna de las tecnologías y productos enumerados anteriormente?

Gracias.

ACTUALIZACIÓN

Todavía estoy a la caza de algunos buenos servidores WebSocket que son fiables en un nivel de producción. Agregué XSockets y SignalR al campo Websockets después de encontrarlos recientemente. Hoewver, todavía hay dos contendientes principales en este momento. Eso podría ser solo por el hecho de que tienen equipos de marketing increíblemente buenos, buen material disponible para desarrolladores: API y videos. Muchas otras implementaciones parecen estar aún en fases recién nacidas, donde se dan ejemplos de conectividad con solo unos pocos clientes. Si bien esto demuestra la tecnología, estas demostraciones no están respaldadas con datos importantes de carga útil/capacidad de carga.Kaazing y LightStreamer cumplen con los requisitos a continuación.

XSockets tiene algunos buenos ejemplos, pero una vez más, faltan algunas métricas de producción reales.

Parece que SignalR aún no se ha probado en un entorno de producción real. Una solución de escalabilidad está en desarrollo pero no parece estable todavía. Estoy deseoso de ver cómo funciona este proyecto en el futuro.

requisitos principales son:

  1. Capacidad para aplicar la tecnología de respaldo (si HTML5/WebSockets son no disponible)
  2. alto número de conexiones simultáneas y el número de mensajes por segundo
  3. Escalable - capacidad para agregar servidores/nodos adicionales para mayores requisitos de tráfico
+1

Estaría realmente interesado en escuchar las experiencias de alguien con SignalR. Gracias. –

+0

ElHaix, ¿con qué terminaste yendo, y qué le recomendarías a alguien que haga esta pregunta hoy? – Jonesome

Respuesta

0

La ganancia de rendimiento que obtienes con WebSockets sobre las soluciones de cometas tradicionales se encuentra en el orden de múltiples órdenes de magnitud; Definitivamente iré con el campamento de WebSockets. Here es una comparación tradicional del vendedor de cometas de las dos tecnologías, que mide un factor de más de 150x a favor de WebSockets (700 ms frente a 3 ms con 50,000 usuarios).

algunas notas en nombre de Kaazing:

Kaazing es totalmente compatible con Microsoft como una plataforma de servidor. Además, como nota, Kaazing admite una variedad de bibliotecas y tecnologías de clientes, incluida la pila de Microsoft: .NET y Silverlight, que muchos de nuestros clientes utilizan con alegría.

Además, Kaazing ofrece protocolos comerciales enriquecidos sobre WebSockets, lo que le permite "hablar" XMPP directamente en su código de cliente.

Acerca del soporte del navegador: Kaazing proporciona una emulación WebSocket excepcionalmente buena, compatible con todos los navegadores, incluidos los navegadores antiguos, todo el camino de regreso a IE6. Puede leer más al respecto en this blog post.

Respecto a la madurez: el Kaazing WebSocket Gateway ha sido enviado desde 2009, y tiene un gran número de clientes de alto perfil en muchas industrias, incluidas las financieras, la logística, los juegos y la venta minorista; plataforma muy madura con soporte de primera clase.

+0

Peter, también leí otro de sus comentarios (http://stackoverflow.com/questions/9167564/actionscript-socket-vs-websocket/9204242#9204242), la capacidad de seleccionar automáticamente la capa de transporte adecuada es importante (navegadores heredados), que es a lo que deduzco que están aludiendo en '... lo que les permite "hablar" XMPP ... ". Algunos puntos muy buenos. ¿Conocen alguna implementación de servidor basada en .Net para comparar? :) – ElHaix

+0

Disculpe, no estoy familiarizado con los servidores .NET WebSocket –

+0

En XMPP: admitimos la mensajería XMPP sobre WebSockets. Por lo tanto, en lugar de desarrollar contra las API WebSocket de bajo nivel, puede utilizar protocolos/API de mensajería de nivel superior encima de los WebSockets nativos (o en caso de navegadores más antiguos, emulados) –

1

Por razones incl. los que ya mencioné anteriormente, iría con WebSockets.

Si usa WebSockets, también podría considerar Autobahn WebSockets, un servidor WS de alto rendimiento que admite Windows donde se ejecuta en la parte superior de IOCP (puertos de E/S de finalización).

Esto último es importante si desea escalar a grandes números de conexión (cientos de miles).

Descargo de responsabilidad: autor de Autobahn WebSockets. La tecnología base es OSS. Actualmente estamos preparando una oferta comercial, un centro de mensajería en tiempo real proporcionado como un dispositivo virtual (se ejecuta en VMware/esfera) .. dispositivo completamente integrado y reforzado. Este último también le permite enviar notificaciones a través del concentrador usando un simple HTTP/POST antiguo. Tiene una API REST que le permite enviar a clientes conectados a través de WS. Si está interesado en la prueba beta privada, contácteme ...

1

Parece que elige las implementaciones de Comet más estables disponibles.Todos ellos se ven estables, capaces de alojar de diez a cientos de miles de usuarios por nodo y más.

Entonces, ¿cuál podría ser el próximo? Por ejemplo, PokeIn alojará todos los aspectos de una aplicación web en VisualJS.NET; JSON Video-1, Video-2

Esto también muestra las capacidades incorporadas de esta biblioteca y las variedades que se pueden hacer ..

Además, es compatible con la última versión base 64 serialización de los mensajes entre un cliente y un servidor, por tanto, no más desnudos mensajes en paquetes de red.

ACTUALIZACIÓN: PokeIn 2.0 tiene incorporado el soporte WebSockets.

+0

¿Por qué hay tantos videos "instructivos" o "de demostración", sin narración? ¡Agregar una pista de instrucción de audio a estos sería útil! – ElHaix

2

WebSync v4 usa WebSockets además de retroceder al sondeo largo/sondeo de devolución de llamada según sea necesario. Los WebSockets en WebSync también tienen puertos HTTP estándar, por lo que no habrá problemas con los enrutadores/filrewalls/etc.

En un sistema "normal", debería ver ~ 20k concurrente (por nodo) y ~ 100k mensajes/seg. Esos son muy muy pocos, ya que depende drásticamente de su sistema y los tipos de mensajes que está enviando, etc. Hemos visto hasta 50k usuarios (por nodo) y (en una prueba diferente) 300k mensajes /segundo.

(Negación: Yo trabajo para congelado montaña)

0

SignalR victorias.

Ahora que el producto ha madurado ha sido muy fácil de implementar. Básicamente, ofrece lo que cuestan esos paquetes de $ u $ s $ y $ dolares, pero no tienen los dólares de marketing para mostrar algunas implementaciones realmente geniales.

Desde una perspectiva técnica, puede lograr lo mismo con SignalR. Si tus chicos de tecnología sugieren lo contrario, probablemente no sepan cómo implementar SignalR en un entorno de equilibrio de carga (o incluso por sí mismo).

+0

Y usted (y SignalR) no conocen los sub-protocolos de websockets. –

Cuestiones relacionadas