2008-09-15 23 views
102

que he estado buscando la manera de implementar la mensajería Gmail como dentro de un navegador, y llegamos al concepto Comet. Sin embargo, no he podido encontrar una buena implementación .NET que me permita hacer esto dentro de IIS (nuestra aplicación está escrita en ASP.NET 2.0).Implementación de Comet para ASP.NET?

Las soluciones que he encontrado (o podía imaginar, para el caso) requieren dejando un hilo conductor por usuario - para que pueda devolver una respuesta a él una vez que llegue un mensaje. Esto no escala en absoluto, por supuesto.

Así que mi pregunta es - ¿Conoce una aplicación ASP.NET para la cometa que funciona de una manera diferente? ¿Es eso posible con IIS?

+12

supongo que la implementación inicial bendito-MS es SignalR: http://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx – user423430

+0

Node.JS ahora se admite en Azure, pronto IIS en 2003 será apoyado. Eso significa que podremos ejecutar el servidor de cometas dentro de IIS (http://www.windowsazure.com/en-us/develop/nodejs/) – LamonteCristo

Respuesta

44

Comet es difícil de escalar con IIS debido a la conectividad persistente del cometa, pero hay un equipo mirando escenarios Comet ahora. También mire Aaron Lerch's blog ya que creo que ha realizado algún trabajo temprano en Comet en ASP.NET.

+9

Esto se implementa realmente; echa un vistazo a WebSync, según la respuesta de Antón a continuación. (http://www.frozenmountain.com/websync/) – jvenema

+3

¿Alguien llama reverse ajax? mira esto: http://pokein.codeplex.com – Zuuum

+4

controladores MVC asincrónicos pueden ayudar a combatir los problemas de IIS mediante la descarga de la espera para las discusiones no trabajo de IIS, ver esta [gran post por Clay Lenhart] (http: //clay.lenharts .net/blog/2010/10/19/websockets-es-genial-pero-qué-puede-hacer-hoy). Consulte también [Proyecto de ejemplo del servidor de chat] (https://bitbucket.org/jacob4u2/mvcchatsite/src) en BitBucket. – Jacob

0

creo que el enfoque Comet no es realmente escalable menos que esté preparado para ampliar la granja de servidores web horizontalmente (mediante la adición de 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 enviar cosas a esa conexión de vez en cuando para informar inmediatamente al usuario de un cambio o actividad.

+6

Todo solo es verticalmente escalable hasta un punto, después del cual la escala horizontal debe tomarse lugar. – Anton

3

También puede buscar en el Kaazing Enterprise Gateway que ha hecho una versión de producción de su puerta de entrada WebSocket [HTML 5], que reemplaza a la forma del cometa por completo y permite conexiones full-duplex entre los navegadores & servidores de aplicaciones.

También puede buscar en Light Streamer Demos

33

WebSync es un servidor Comet escalable compatible con los estándares que se integra directamente en la tubería/.NET de IIS. También está disponible bajo demanda como un servicio alojado.

Es compatible oficialmente hasta 20.000 conexiones de cliente simultáneas por nodo servidor, pero las pruebas individuales han visto que ir tan alto como 50.000. El rendimiento del mensaje es óptimo en torno a la marca de clientes simultáneos de 1.000 a 5.000, con mensajes entregados desde 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 el apoyo del lado del servidor para .NET/Mono y PHP.

La agrupación se apoya el uso de SQL Server o Azure almacenamiento en caché de la caja, pero los proveedores personalizados se puede escribir para casi cualquier cosa (Redis, NCache).

Descargo de responsabilidad: Trabajo para la empresa que desarrolla este producto.

+16

debería haber una exención de responsabilidad aquí, ya que es su producto ... –

+9

Claro, es producido por la empresa para la que trabajo :) Definitivamente no estoy tratando de ocultar nada. – Anton

+1

@Anton - no ocultar algo no es lo mismo que revelarlo. – RedFilter

1

una vez que utiliza un sitio de chat hace mucho tiempo que utiliza una costumbre construido http servidor de streaming. De hecho, reproduje ese software en un punto por pura curiosidad, y creo que es bastante fácil de hacer. Nunca trataría de aplicar un tipo similar de "solicitud infinita" en IIS, especialmente en ASP.NET, debido a que las solicitudes atar un hilo grupo de subprocesos (o proceso de IO, si se utilizan controladores asíncronos) indefinidamente, lo que significa que sólo puede manejar tanto por servidor como lo permita su configuración de grupo de subprocesos.

Si tuviera una gran necesidad legítima de dicha funcionalidad, honestamente escribiría un servidor http personalizado para ello.

Yo sé que en realidad no responde a su pregunta, pero pensé que la entrada podría ser relevante.

4

En realidad hay muchas opciones para crear el sitio web ajax apoyado con ASP.NET, pero sinceramente, PokeIn es la forma más fácil de crear una aplicación web cometa ajax compatible. Ha guardado uno de los proyectos de mi empresa.

15

Hace poco escribió un simple example of a Long Polling Chat Server utilizando controladores MVC 3 asíncronas basadas en un great article by Clay Lenhart

Puede utilizar el example on a AppHarbor deployment He definido basado en el código fuente del proyecto BitBucket.

Además, más información disponible en mi blog post explaining the project.

+0

me gusta el ejemplo de una implementación 'blog explicando el proyecto' – guaike

+0

AppHarbor -> https://web.archive.org/web/20130328042214/http://jacob4u2.posterous.com/mvc-3-long- sondeo-cometa-chat- – jaybro

1

El grupo WS-I publicó algo llamado "Reliable Secure Profile" que tiene un Glass Fish y .NET implementation que al parecer inter-operate bien.

Con un poco de suerte, hay una implementación de Javascript también.

También hay una implementación de Silverlight que usa HTTP Duplex. Puede connect javascript to the Silverlight objeto para obtener devoluciones de llamada cuando se produce un impulso.

También hay commercial paid versions también.

+4

ejemplo a granel-publicar la misma respuesta exacta a través de una serie de preguntas en sucesión corta tiende a tropezar algunas banderas ... –

+2

([psst] (http://meta.stackexchange.com/questions/ 88078/what-to-do-about-these-answer-dupes)) – Will

Cuestiones relacionadas