1. AjaxReverse (Comet)
Aplicaciones en tiempo real
… un paso mas allá de Ajax
(ejemplos con ASP.NET MVC)
Ing. Jose A. Fernandez
jfernandez{arroba}desarrollosnea{punto}com
JUTI – UTN FRRe
Agosto.2011
blog: http://team.desarrollosnea.com.ar/blogs/jfernandez
blog personal: http://geeks.ms/blogs/fernandezja
@fernandezja
3. Ajax
• XMLHttpRequest
– http://www.w3.org/TR/XMLHttpRequest/
• API implementada en los motores de script
• “Es el Mago en Ajax”, …
– ya que establece un canal de comunicación
browser-server en background
4. Tiempo real (en web)
• Tener información “fresca”. Lo mas pronto posible
• HTTP basado en peticiones
– Request-Response
– No es suficiente para el requerimiento
– Debemos solicitar información “constantemente”
Ejemplos:
– Aplicaciones de colaboracion
– Dashboards/Cuadros de mandos
– Chat/Juegos
– Algun progreso de una tarea…
– etc.
5. Obtener datos en tiempo real
• Polling/Sondeo
– Solicitar información “constantemente”
• Push/”Colocar”
– Recibir información (alguien lo tiene y lo puedo
recibir)
• Pulling/Extraer
– Solicitar información. Cuando sea necesaria
11. AsyncController
(nuevo en ASP.NET MVC)
• Sin
– Controlador sincrónico. “Espere por favor…”
– Thread debe esperar a que termine
• No puede responder otras peticiones
• Limite de hilos
• Con
Enlaces
– MSDN: AsyncController
– Code Samples: ASP.NET MVC Asynchronous and Areas
15. … un poco de magia“elegante”
• http://code.google.com/p/jquery-websocket/
• The Graceful WebSocket
• http://code.google.com/p/jquery-graceful-
websocket/
• http://kaazing.com/ lo hace funcionar al IE6 ;)
• Emular con flash https://github.com/gimite/web-
socket-js
16. WebSocket (HTML)
• Protocolo de comunicación full-duplex
• Para ser utilizado en los navegadores (y servidores)
– Que sea fácil de utilizar
• Estandarización
– W3C Web Applications Working Group
– IETF Hypertext Bidirectional (HyBi) Working Group.
• Fuente
http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)
17. • Pokerin: Comet Ajax Library for ASP.NET & Mono
http://pokein.com/
http://pokein.codeplex.com/
18. • Enlaces
– Prototipo de WebSocket para IIS 7 (WCF)
– SuperWebSocket: http://superwebsocket.codeplex.com/
– pywebsocket: Componente para Apache
19. HTTP Upgrade Request
Cliente Servidor
1 HTTP HTTP
TCP
Cliente Servidor
2 HTTP HTTP
TCP HTTP Switching Protocols Response
Web Web
3 Socket Socket
TCP
Intercambio de mensajes
20. 1 GET /ejemplo HTTP/1.1
Host: juti-frre.com.ar
Upgrade: websocket
Cliente Connection: Upgrade
HTTP Sec-WebSocket-Key: {clave/encriptada/base64}
Sec-WebSocket-Origin: http://juti-frre.com.ar
Sec-WebSocket-Version: 6
1
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Cliente Connection: Upgrade
HTTP Sec-WebSocket-Accept: {respuesta en base a clave/encriptada/base64}
21. Conclusiones…
• “No es para cualquier requerimiento y ámbito”.
• Entornos de LAN (Intranet)
• Polling
- Alto trafico en la red
- Mensajes “innecesarios” (sin cambios)
+/ - Intervalo de sondeo
• Dependiendo del “%-intervalo” de actualización
• Puede ser bajo y quedarnos sin recibir actualización
+ Se puede modificar el intervalo desde el servidor en
alguna actualización (IA/Estadisticas)
22. Preguntas??
Ing. Jose A. Fernandez
jfernandez{arroba}desarrollosnea{punto}com
JUTI – UTN FRRe
Agosto.2011
blog: http://team.desarrollosnea.com.ar/blogs/jfernandez
blog personal: http://geeks.ms/blogs/fernandezja
@fernandezja