2009-01-23 12 views
18

¿Cuál es la mejor manera de enviar información de un servidor a un cliente web? Sé que es posible configurar tomas con Silverlight y Flash, pero quiero evitar las dos tecnologías.asp.net http server push to client

Parece que Gmail hace un gran trabajo al sondear los servidores para buscar correos electrónicos actualizados e incluso sus programas de chat funcionan muy bien (todos funcionan en mi navegador web). ¿Alguna idea sobre la mejor manera de hacer algo como esto pero usando asp.net?

Edit: Si tengo que sondear, me gustaría sondear el servidor cada 2 o 3 segundos. Así que no estoy seguro de cómo hacer esto sin poner el servidor web de rodillas bajo un uso intensivo.

+0

Re: La frecuencia de sondeo, 2-3 segundos de sondeo en un servicio web muy ligero suele ser más escalable que las implementaciones HTTP "push" verdaderas. Mantener conexiones permanentemente abiertas consume muchos recursos. –

+0

Dos ejemplos disponibles en http://www.udaparts.com/document/Tutorial/httppush.htm y http://www.udaparts.com/document/Tutorial/slpush.htm –

Respuesta

0

Para hacer eso, use ASP.NET 3.0/3.5 o si está utilizando versiones anteriores, use ASP.NET Ajax. Sin embargo, ambos ejemplos enumerados por usted están usando Ajax para extraer información, no presionarla.

3

Crearía un servicio web invocable y usaría JQuery.

He aquí una buena guía sobre el uso de jQuery para llamar a un ASP.NET (ASMX) servicio web:

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

Ahora, usted acaba de sondear este servicio web en cualquier intervalo que tiene sentido para su aplicación.

Además, el problema con ASP.NET AJAX es que es un poco pesado. Al usar JQuery, puede llamar a su servicio web desde un formulario web regular de ASP.NET, desde una Vista en MVC, o realmente usando cualquier otra tecnología web (ASP clásico, PHP, lo que sea) todo desde el lado del cliente usando solo, en mi ver, el mejor framework de JavaScript alrededor. :)

6

La técnica de inserción que estás buscando se llama Comet. Ver this article para algunos punteros.

4

Pruebe WebSync, un servidor de cometas escalable creado para .NET/IIS. Te permitirá enviar datos muy bien desde el servidor y se integra súper fácilmente con proyectos ASP.NET (un par de entradas web.config es todo lo que necesitas).

+0

[Descargo de responsabilidad completo: yo trabajo para Frozen Mountain ] – jvenema

+2

WebSync es servicio pago –

4

PokeIn es una biblioteca ajax inversa para ASP.NET & Mono. Tiene varias capacidades, como .NET a JSON, viceversa. Puede descargar proyectos de ejemplo desde here

7

Como ha mencionado ASP.NET, debe utilizar SignalR. Vea mi otra respuesta aquí: Instant notifications like Facebook

+0

¿Alguien ha tenido experiencia en escalar SignalR? Necesito enviar mensajes pequeños a unos 100.000 clientes (el mismo mensaje para todos ellos, ticker) ¿cuántos servidores va a necesitar? –