2009-06-09 11 views
8

Estoy tratando de usar WCF para implementar un empuje de servidor de estilo cometa a una aplicación web ajax.cometa e hilos WCF

En mi servicio WCF, he implementado un método WaitForEvents que llama a Monitor.Wait para suspender el hilo hasta que lleguen nuevos datos. En ese punto, el monitor se pulsa, y el método devuelve los datos nuevos que cierran la solicitud de estilo del cometa.

La solicitud se realiza nuevamente cuando esto sucede.

Actualmente, esto funciona bien pero noté que WCF necesita crear un nuevo hilo para cada usuario conectado. Esto es probablemente debido a que el hilo no puede devolverse a la lista de hilos hasta que ingresen los datos, por lo que cada usuario conectado necesita un hilo nuevo.

Quiero hacer que esta implementación sea más eficiente al tener un servicio de subprocesos múltiples conexiones. Si tuviera que usar un socket, esto podría hacerse dejando el socket abierto y devolviendo primero el hilo al grupo de subprocesos. Cuando lleguen nuevos datos, serán entregados por otro hilo y podemos escribir los nuevos datos directamente en el socket y cerrarlos.

¿Alguien sabe cómo esto se puede hacer a través de WCF?

He estado buscando "Push-Style Streaming" http://msdn.microsoft.com/en-us/library/bb472551.aspx y mencionan que "WCF implementa un modelo" pull "en el que el código de la aplicación (el servicio) devuelve una instancia de Stream y se basa en la infraestructura de nivel inferior para extraer datos de esta secuencia y escribirlos en la red ". pero no puedo encontrar ningún ejemplo de este el sitio web.

¡Muchas gracias de antemano!

Respuesta

2

Salida nComet

No está utilizando WCF, pero creo que el autor está trabajando en una versión que utiliza WCF. Póngase en contacto con él a través de codeplex y pedirle :-)

"nComet es una aplicación .NET de la cometa arquitectura (push-AJAX inversa). Este lado del servidor tubería utiliza de larga vida iniciada por el cliente conexiones HTTP al mensajes de inserción para el cliente. una vez que el cliente recibe una respuesta, abre inmediatamente otra petición HTTP , que el servidor mantiene hasta un mensaje está listo. Esta arquitectura permite al servidor empuje dinámico html/xml/json/etc en el navegador, en lugar de que el navegador interrogue al servidor .

Este proyecto tiene como alcance la arquitectura de servidor .NET , inicialmente proporcionar un HttpListener (para un host personalizado comunicación con HTTP.SYS directamente), así como una aplicación ASP.NET , donde el ASP La implementación .NET se puede alojar dentro de IIS , así como en un proceso externo. La biblioteca simplificará la implementación de los patrones de mensaje común , como la inserción de los últimos datos , así como la sincronización. Código de ejemplo y enlaces a múltiples implementaciones de javascript también se proporcionarán .. "

1

También es posible que desee comprobar hacia fuera WebSync, una aplicación .NET cometa funciona igual de dandy con WCF

(Negación: Yo trabajo para la empresa)..