[Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro +...

17
Aplicaciones Web de Tiempo Real Microsoft Student Partner René Pastor Mogro - Facundo Castillo Verón Salta – Argentina Septiembre 2009

description

[Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Transcript of [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro +...

Page 1: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Aplicaciones Web de Tiempo Real

Microsoft Student PartnerRené Pastor Mogro - Facundo Castillo Verón

Salta – ArgentinaSeptiembre 2009

Page 2: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

• Introducción al tema• Definición:

• Sistemas de tiempo real• Modelos de Aplicaciones web

• Modelo Clásico• Modelo Ajax• Modelo Comet

• Ajax vs Comet• Comet: Consideraciones• Comet: Posibles Soluciones

• Dojo• HTML 5 - WebSocket• Lightstreamer• WCF – Silverlight – ASP.net

• Demo• Conclusiones

Agenda:

Page 3: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Introducción :

En esta charla vamos a definir y demostrar la tecnología Comet, como fueron evolucionando los modelos de aplicaciones web, para aplicaciones de Internet en los casos en donde el usuario realiza peticiones al servidor , algunas ventajas de usar esta estrucutura, algunas caracteristicas de esta técnica, etc.

Vamos a ver un poco de código para enteder el funcionamiento y como trabaja en una aplicación de tiempo real.

Para terminar veremos una Demo en donde se ve reflejado un chat en linea, y una tabla con la actualización de los valores de la bolsa de mercado reflajando en cada momento que se registra un cambio en el server.

Page 4: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Definiciones

Sistemas de tiempo RealUn sistema de tiempo real es aquel en el que para que las operaciones computacionales sean correctas no solo es necesario que la lógica e implementación de los programas computacionales sea correcto, sino también el tiempo en el que dicha operación entregó su resultado. Si las restricciones de tiempo no son respetadas el sistema se dice que ha fallado (Donald Gillies).

Page 5: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Modelos de Aplicaciones Web Modelo Clásico

Normalmente una página web es entregada al cliente a petición de él mismo. Para cada petición el navegador realiza una conexión HTTP al servidor web, el servidor devuelve los datos y termina la conexión. La desventaja de este método es que para poder actualizar los datos en el cliente, el usuario o el cliente debe actualizar o cambiar de página web, lo que hace que esto tome mucho tiempo sin dejar de lado que consume mucho ancho de banda.

Modelo AjaxAjax que permite al navegador solicitar solo la parte de la página web que fue cambiada o actualizada. Esto reduce significativamente el tiempo para actualizar el contenido, sin embargo para algunas situaciones no es conveniente.

Page 6: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Modelos de Aplicaciones Web

Modelo CometEn desarrollo web, Comet es un termino genérico para describir un modelo de aplicación web en el que una petición HTTP mantenida abierta permite a un servidor web enviar datos a un navegador por tecnología push, sin que el navegador los solicite explícitamente. Comet es un término que cubre múltiples técnicas para conseguir esta interacción.Comet también es conocido como: Ajax Push, Reverse Ajax, Two-way-web, HTTP Streaming and HTTP server push, entre otros.

Page 7: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Modelos de Aplicaciones Web

Page 8: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Ajax vs CometLa diferencia que existe entre AJAX y Comet es que en este modelo se mantiene una conexión abierta entre el cliente y el servidor web; el cliente no solicita los datos, pero si envía información al servidor, y el servidor no le responde al cliente con un bloque de datos, se espera a que haya algún evento de lado del servidor para enviar la información.

Por ejemplo en una aplicación de mensajes instantáneos que está basada sobre AJAX, para que una lista de usuarios pueda actualizarse pudiendo cambiar si un usuario se conectó o desconectó, el cliente necesita conectarse al servidor web cada cierto tiempo solicitando los cambios que hayan ocurrido, esto consume ancho de banda y tiempo.

Con Comet(*), el cliente no deberá estar solicitando los cambios de la lista de usuarios, el servidor web es el que le envía los datos al cliente cuando cambia la lista de usuarios, esto reduce considerablemente el consumo de ancho de banda.

(*) En cualquier caso, en la práctica, las aplicaciones Comet usan tradicionalmente programación AJAX con una petición prolongada para detectar nueva información en el servidor.

Page 9: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Consideraciones:Comet reduce la latencia para la entrega de datos de manera

significativa

Las conexiones full duplex no estan soportadas por todos los navegadores.

Generalmente no se debe abrir ningun puerto especifico, dependera de como esta implementado Comet.

Una de las desventajas es que Comet escribe mucha informacion en los headers HTTP de los mensajes haciendo esto un poco mas pesados.

Page 10: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Comet: Posibles soluciones Dojo

Alex de DojoToolkit.org fue el primero en definir esta técnica, y Dojo es el primer framework que implementa a Comet.

HTML 5 - WebSockets Es la nueva especificación de HTML que esta llevando a cabo la W3C. En esta futura versión se define en la sección de comunicación los WebSockets, lo que sera un importante avance en esta área.Los WebSockets definen un estándar para aplicaciones RIA (en las que se utiliza Ajax, Comet, etc.) y un socket nativo para el navegador, el cual cuenta con comunicación bidireccional (full duplex) sobre una sola conexión. Hoy en dia el full duplex no es soportado por los navegadores por lo que técnicas como Ajax deben mantener dos conexiones abiertas.Para utilizar un WebSocket, la especificación introduce una interfaz que se consume via JavaScript desde cualquier browser que soporte Html 5.

LightstreamerLightstreamer es un servidor escalable y confiable para enviar datos en forma directa a aplicaciones ricas de Internet.Basado en el modelo Comet, envía datos tiempo real a cualquier navegador Web, sin necesidad de instalar nada en el cliente. Clientes HTML, AJAX, Flex, AIR, Silverlight, así como Java, .NET, aplicaciones de iPhone, pueden recibir los datos en vivo desde Lightstreamer.

Page 11: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Comet: Posibles solucionesWCF – Silverlight – ASP.net

Windows Comunications Foundations permite crear servicios full dúplex, aprovechando esta característica y combinándola con Silverlight y ASP.net podremos implementar Comet.

Referencias: System.ServiceModel.PollingDuplex.dllLado Cliente:

C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Libraries\ClientLado Servidor:

C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Libraries\Server

Page 12: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Demo

Page 13: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Conclusiones :Ajax no es la única alternativa o técnica para la comunicación

entre el browser y el server cuando se hace algun desarrollo RIA. Existen la opción de usar Comet y el futuro prometedor estándar WebSocket de la especificación HTML version 5.0

Los beneficios de Comet incluyen un gran rendimiento (baja latencia), pero baja la escalabilidad, ya que cada conexión del cliente se mantiene abierta durante largos períodos de tiempo que los servidores web de hoy no están optimizados.

Comet puede ser utilizado en sistemas de producción de misión crítica, en donde la escalabilidad de red, el bajo impacto, la gestión de ancho de banda, la adaptación de streaming, y otras características avanzadas, han demostrado ser fundamentales.

Page 14: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Contacto:

• http://www.adaptivepath.com/ideas/essays/archives/000385.php

• http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=2401

• http://weblogs.asp.net/dwahlin/archive/2008/06/16/pushing-data-to-a-silverlight-client-with-wcf-duplex-service-part-i.aspx

• http://msdn.microsoft.com/es-es/library/dd470105(VS.95).aspx

• http://es.wikipedia.org/wiki/Comet• http://msdn.microsoft.com/es-es/library/cc645027(VS.95).asp

x• http://silverlightforbusiness.net/2009/06/23/pushing-data-fro

m-the-server-to-silverlight-3-using-a-duplex-wcf-service/

Referencias:

MSP René Mogro, [email protected] Facundo S. Castillo, [email protected]

Page 15: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

¿Preguntas?

Page 16: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)

Gracias!!

Page 17: [Code Camp 2009] Aplicaciones de tiempo real con Silverlight y ASP.NET - COMET (René Pastor Mogro + Facundo Castillo)