ajax reverse (comet) con asp.net mvc - juti 2011

22
AjaxReverse (Comet) 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 Aplicaciones en tiempo real … un paso mas allá de Ajax (ejemplos con ASP.NET MVC)

Upload: desarrollos-nea

Post on 08-Jul-2015

694 views

Category:

Technology


0 download

DESCRIPTION

Que es Ajax reverse (Comet)? alternativas para desarrollo web en tiempo real

TRANSCRIPT

Page 1: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

AjaxReverse (Comet)

Ing. Jose A. Fernandezjfernandez{arroba}desarrollosnea{punto}com

JUTI – UTN FRReAgosto.2011

blog: http://team.desarrollosnea.com.ar/blogs/jfernandezblog personal: http://geeks.ms/blogs/fernandezja

@fernandezja

Aplicaciones en tiempo real… un paso mas allá de Ajax

(ejemplos con ASP.NET MVC)

Page 2: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

Comet… WebSockets

Hasta el infinito y mas allá… un paso mas allá de Ajax

Page 3: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

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

Page 4: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

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.

Page 5: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

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

Page 6: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

Como lo hacemos?

• Flash (sockets – XMLSocket/Socket – AS3)

• Silverlight (con servicios duplex)

• Comet…

• WebSockets (HTML5)

Page 7: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

Comet?

• “MKT”

• Otros nombres

– Reverse Ajax,

– Ajax Push,

– HTTP Push,

– HTTP Server Push

– HTTP Streaming

– two-way-web,

Page 8: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

• Demo cajeros

Page 9: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

Prevenir

Intervalo

Page 10: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

Polling vs Pulling

Page 12: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

Streaming & Long-Polling.

• Dos opciones

Page 13: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

multipart/x-mixed-replace

• comet = cometobj();

• comet.multipart = true;

Page 14: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

Dojo.js

• http://dojofoundation.org/projects/cometd

Page 16: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

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.

• Fuentehttp://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)

Page 17: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

• Pokerin: Comet Ajax Library for ASP.NET & Mono

http://pokein.com/http://pokein.codeplex.com/

Page 19: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

ClienteHTTP

ServidorHTTP

HTTP Upgrade Request

ClienteHTTP

ServidorHTTPHTTP Switching Protocols Response

1

2

WebSocket

WebSocket3

Intercambio de mensajes

TCP

TCP

TCP

Page 20: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

GET /ejemplo HTTP/1.1

Host: juti-frre.com.ar

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: {clave/encriptada/base64}

Sec-WebSocket-Origin: http://juti-frre.com.ar

Sec-WebSocket-Version: 6

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: {respuesta en base a clave/encriptada/base64}

ClienteHTTP

1

ClienteHTTP

1

Page 21: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

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)

Page 22: Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011

Ing. Jose A. Fernandezjfernandez{arroba}desarrollosnea{punto}com

JUTI – UTN FRReAgosto.2011

blog: http://team.desarrollosnea.com.ar/blogs/jfernandezblog personal: http://geeks.ms/blogs/fernandezja

@fernandezja

Preguntas??