He estado buscando formas de implementar mensajes similares a gmail dentro de un navegador y llegué al concepto de Comet . Sin embargo, no he podido encontrar una buena implementación de .NET que me permita hacer esto dentro de IIS (nuestra aplicación está escrita en ASP.NET 2.0).
Las soluciones que encontré (o que podría pensar, para el caso) requieren dejar un hilo en ejecución por usuario, para que pueda devolverle una respuesta una vez que reciba un mensaje. Esto no escala en absoluto, por supuesto.
Entonces, mi pregunta es: ¿conoce alguna implementación ASP.NET para Comet que funcione de una manera diferente? ¿Es eso posible con IIS?
Respuestas:
Comet es un desafío para escalar con IIS debido a la conectividad persistente del cometa, pero ahora hay un equipo que analiza los escenarios de Comet. También mire el blog de Aaron Lerch, ya que creo que ha realizado algunos trabajos iniciales de Comet en ASP.NET.
fuente
WebSync es un servidor Comet escalable compatible con los estándares que se integra directamente en la canalización IIS / .NET. También está disponible bajo demanda como servicio alojado.
Admite oficialmente hasta 20.000 conexiones de cliente simultáneas por nodo de servidor, pero las pruebas individuales lo han visto llegar a 50.000. El rendimiento de los mensajes es óptimo alrededor de la marca de 1,000-5,000 clientes simultáneos, con mensajes entregados hasta 300,000 por segundo desde un solo nodo.
Incluye soporte del lado del cliente para JavaScript, .NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime y .NET Compact, con soporte del lado del servidor para .NET / Mono y PHP.
La agrupación en clústeres es compatible con SQL Server o el almacenamiento en caché de Azure listo para usar, pero se pueden escribir proveedores personalizados para casi cualquier cosa (Redis, NCache).
Descargo de responsabilidad: trabajo para la empresa que desarrolla este producto.
fuente
Recientemente escribí un ejemplo simple de un servidor de chat de sondeo largo utilizando controladores asíncronos MVC 3 basado en un gran artículo de Clay Lenhart
Puede usar el ejemplo en una implementación de AppHarbor que configuré según la fuente del proyecto BitBucket.
Además, hay más información disponible en la publicación de mi blog que explica el proyecto .
fuente
En realidad, hay muchas opciones para crear un sitio web compatible con ajax con ASP.NET pero, sinceramente, PokeIn es la forma más fácil de crear una aplicación web compatible con cometa ajax. Ha salvado uno de los proyectos de mi empresa.
fuente
También puede mirar Kaazing Enterprise Gateway, que ha realizado una versión de producción de su puerta de enlace webSocket [HTML5] que reemplaza completamente la forma cometa y permite conexiones full-duplex entre navegadores y servidores de aplicaciones.
También puede mirar las demostraciones de Light Streamer
fuente
Una vez utilicé un sitio de chat hace mucho tiempo que utilizaba un servidor de transmisión http personalizado. De hecho, reproduje ese software en un momento por pura curiosidad, y creo que es bastante fácil de hacer. Nunca intentaría implementar un tipo similar de "solicitud infinita" en IIS, especialmente en ASP.NET, porque las solicitudes atan un subproceso de grupo de subprocesos (o subproceso de IO, si se utilizan controladores asíncronos) de forma indefinida, lo que significa que solo puede manejar tanto por servidor como lo permita la configuración de su grupo de subprocesos.
Si tuviera una fuerte necesidad legítima de dicha funcionalidad, honestamente escribiría un servidor http personalizado para ella.
Sé que eso realmente no responde a tu pregunta, pero pensé que la entrada podría ser relevante.
fuente
El grupo WS-I publicó algo llamado "Perfil seguro confiable" que tiene una implementación de Glass Fish y .NET que aparentemente interactúan bien.
Con suerte, también existe una implementación de Javascript .
También hay una implementación de Silverlight que usa HTTP Duplex. Puede conectar javascript al objeto Silverlight para obtener devoluciones de llamada cuando se produce una inserción.
También hay versiones comerciales de pago .
fuente
Creo que el enfoque de Comet no es realmente escalable a menos que esté preparado para expandir la granja web horizontalmente (agregando más servidores web a la mezcla). La forma en que funciona es que deja una conexión TCP abierta por sesión de usuario, solo para que el servidor pueda insertar cosas en esa conexión de vez en cuando para informar inmediatamente al usuario de un cambio o actividad.
fuente