He estado buscando formas de implementar mensajes similares a gmail dentro de un navegador y llegué al concepto Comet . Sin embargo, no he podido encontrar una buena implementación de .NET que me permita hacerlo dentro de IIS (nuestra aplicación está escrita en ASP.NET 2.0).
Las soluciones que encontré (o podría pensar, para el caso) requieren dejar un hilo en ejecución por usuario, para que pueda responderle una vez que reciba un mensaje. Esto no se escala en absoluto, por supuesto.
Entonces, mi pregunta es: ¿sabe de una implementación ASP.NET para Comet que funcione de una manera diferente? ¿Es eso posible con IIS?
El cometa es difícil de escalar con IIS debido a la conectividad persistente del cometa, pero ahora hay un equipo que analiza los escenarios de cometas. También vea el blog de Aaron Lerch ya que creo que ha hecho algunos de los primeros trabajos de Comet en ASP.NET.
WebSync es un servidor Comet escalable que cumple con los estándares que se integra directamente en el canal IIS/.NET. También está disponible bajo demanda como un servicio alojado.
Oficialmente soporta hasta 20,000 conexiones de clientes concurrentes por nodo de servidor, pero las pruebas individuales han visto que llegan a 50,000. El rendimiento de los mensajes es óptimo alrededor de la marca de 1,000-5,000 de clientes concurrentes, con mensajes entregados a un máximo de 300,000 por segundo desde un solo nodo.
Incluye soporte de cliente para JavaScript, .NET/Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime y .NET Compact, con soporte de servidor para .NET/Mono y PHP.
Se admite la agrupación en clústeres utilizando SQL Server o Azure Caching fuera de la caja, pero los proveedores personalizados pueden escribirse para casi cualquier cosa (Redis, NCache).
Descargo de responsabilidad: Trabajo para la empresa que desarrolla este producto.
Recientemente escribí un ejemplo simple de un servidor de chat de sondeo largo utilizando los controladores asíncronos MVC 3 basados en un gran artículo de Clay Lenhart
Puede usar el ejemplo en una implementación de AppHarbor Lo configuro en función de la fuente del proyecto BitBucket.
Además, hay más información disponible en mi publicación de blog que explica el proyecto .
En realidad, hay muchas opciones para crear un sitio web compatible con ajax con ASP.NET pero, honestamente,PokeInes la forma más fácil de crear una aplicación web compatible con cometa ajax. Se ha salvado uno de los proyectos de mi empresa.
También puede consultar el Kaazing Enterprise Gateway que ha realizado un lanzamiento de producción de su portal webSocket [HTML5] que reemplaza completamente al cometa y permite conexiones dúplex entre navegadores y servidores de aplicaciones.
También puede consultar Light Streamer Demos
El grupo WS-I publicó algo llamado "Perfil seguro confiable" que tiene una implementación de Glass Fish y .NET que aparentemente interopera bien.
Con un poco de 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 un Empuje.
También hay versiones comerciales pagadas también.
Una vez utilicé un sitio de chat hace mucho tiempo que utilizaba un servidor de transmisión http creado a la medida. En realidad, reproduje ese software en un punto 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 vinculan un subproceso de grupo de subprocesos (o IO subproceso, si se usan controladores asíncronos) por tiempo indefinido , 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 tal funcionalidad, honestamente escribiría un servidor http personalizado para ello.
Sé que realmente no responde a tu pregunta, pero pensé que la información podría ser relevante.
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 abierta una conexión TCP 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.