server push comet
DESCRIPTION
This are the slides to the talk about the comet architecture that was presented on the weekly event "Mayflower-Donnerstag" that is completely free, participants are allways welcome!For more information see:http://www.facebook.com/home.php?#/group.php?gid=103889073354TRANSCRIPT
Server Push: Ausliefern von Daten ohne Browser- Anfrage auf Basis einer Comet-Architektur
Martin Ruprecht, MAYFLOWER-Donnerstag 06.August 2009 MünchenMAYFLOWER-Donnerstag 24.September 2009 Würzburg
© MAYFLOWER GmbH 2009
2
Server Push/ Comet Architektur
Agenda
❙ Client/ Server-Kommunikation mit AJAX
❙ Einführung in Comet❙ Notwendigkeit
❙ Comet-Architektur❙ AJAX vs. Comet
❙ Auswirkungen
❙ Herausforderungen❙ Comet-Techniken❙ Application Server❙ Bayeux Protokoll
❙ Beispiele
❙ Zusammenfassung
© MAYFLOWER GmbH 2009
3
Server Push/ Comet Architektur
Client/ Server- Kommunikation
❙ synchroner Datenaustausch❙ eine GET-Anfrage (Request)❙ eine HTTP-Antwort (Response)
❙ Asynchroner Datenaustausch (AJAX)❙ Asynchronous JavaScript And XML❙ Browser kapselt Request in eigenen Thread❙ Idealfall: reiner Datenaustausch - Teile der Webseite
werden aktualisiert❙ Typischer Einsatz von AJAX:❙ Autocompletion, Validierung, Tooltipps,...
© MAYFLOWER GmbH 2009
4
Server Push/ Comet Architektur
Client/ Server- Kommunikation
❙ AJAX-Architektur❙ Es findet immer ein Request statt❙ Grenzen von AJAX:❙ Chat-Anwendungen, Spiele, Live-Daten vom Server
© MAYFLOWER GmbH 2009
5
Server Push/ Comet Architektur
Einführung in Comet
❙ „The term "Comet" describes the exchanges between a client and a server in which the server, rather than the client, initiates the contact“ (Alex Russell, Dojo project)
© MAYFLOWER GmbH 2009
6
Server Push/ Comet Architektur
Einführung in Comet
❙ Notwendigkeit
AJAX
Verbleib auf einer Webseite
Zeit zum nächsten Reload
ZeitÜbersetzt aus:Comet: Making The Web a 2-Way MediumJoe Walker, Direct Web Remoting Lead Developer
© MAYFLOWER GmbH 2009
7
Server Push/ Comet Architektur
Was ist Comet
❙ Eine Architektur, kein Protokoll❙ Auch Server Push bzw. HTTP Push genannt❙ Wichtigstes Merkmal: Server triggert Kommunikation /
Datenübertragung zum Client❙ Typische Anwendungsfälle:❙ Chat-Anwendungen, Börsentrends, Umfrage-
Ergebnisse, Collaboration-Tools, Spiele, Live-Ticker❙ Google Docs (spreadsheet)
❙ GMail
❙ Zimbra
© MAYFLOWER GmbH 2009
8
Server Push/ Comet Architektur
Comet- Architektur
© MAYFLOWER GmbH 2009
9
Server Push/ Comet Architektur
AJAX vs. Comet
… oder das geht doch mit AJAX auch?
❙ AJAX polling❙ Requests in sehr kurzen Abständen, um Änderungen
vom Server „abzufragen“❙ hohe Serverlast entsteht
❙ längere Abstände führen zu Datenverlusten
❙ Comet❙ Server Push: „Server meldet sich, wenn's was Neues
gibt“❙ Nur kurz Serverlast
❙ keine Datenverluste
© MAYFLOWER GmbH 2009
10
Server Push/ Comet Architektur
Auswirkungen
❙ … auf die Programmierung:❙ der Server triggert die Events❙ Request- / Response-Verhalten❙ Anforderungen an den Client❙ Ready-States
❙ … auf die Anwender:❙ Bessere Usability, snappy Experience, ...
❙ … auf die Serverumgebung:❙ Application Server (z.B. Jetty, Persevere, Grizzly, Perbal)
© MAYFLOWER GmbH 2009
11
Server Push/ Comet Architektur
Herausforderungen
❙ HTTP 1.1 ❙ max. 2 Verbindungen Browser / Domain❙ Comet: mehrere Verbindungen gleichzeitig❙ Request- / Response-Ablauf
❙ Apache Server❙ ein Thread pro Verbindung zum Client❙ Requests werden so schnell wie möglich abgearbeitet
❙ Datenbank-Transaktionen pro Request❙ Verbindungsaufbau ❙ Übernahme der Änderungen
❙ Proxies❙ Caching (wartet bis Antwort komplett ist)
© MAYFLOWER GmbH 2009
12
Server Push/ Comet Architektur
Technische Umsetzung
❙ Long Polling❙ Request (XHR, iFrame)❙ Server verarbeitet die Anfrage sehr langsam❙ bei Event, sofort Response❙ neuer Request❙ Problem mit Proxies wird umgangen
Client ServerClient
startAsyncQuery()
isQueryFinished()
sleep time
isQueryFinished()
sleep time
© MAYFLOWER GmbH 2009
13
Server Push/ Comet Architektur
Technische Umsetzung
❙ Streaming XHR❙ persistente Verbindung von Browser zu Server❙ chunked mode❙ Forever Frame (<script> Tag in iframe)
Client ServerClientopenConnection()
sendData()
sendData()
closeConnection()
© MAYFLOWER GmbH 2009
14
Server Push/ Comet Architektur
Application Server
❙ Inboard❙ Comet ist Bestandteil der Webserver-Architektur (z. B.
DWR Server Framework)❙ Einfacher für Neuentwicklungen
❙ Skaliert nur bedingt
❙ Comet ist „nur“ ein Teil der Infrastruktur
❙ z. B. Jetty Continous, entkoppelt Thread pro Verbindung
ApplicationServer
© MAYFLOWER GmbH 2009
15
Server Push/ Comet Architektur
Application Server
❙ Outboard❙ Comet ist entkoppelt vom Webserver und läuft auf
einem eigenen Server❙ verhält sich wie ein Add-On (z.B. CometD Event Bus)
❙ leichte Integration bei bestehenden Environments
❙ Einstieg ist schwieriger
ApplicationServerCometD
CometD = Comet Daemon
© MAYFLOWER GmbH 2009
16
Server Push/ Comet Architektur
Bayeux Protokoll
❙ Protokoll für Comet / Standardisierung für Comet
❙ Kommunikation zwischen Bayeux-Client und Bayeux Server
❙ Protokoll basiert auf sog. Publishing und Subscribing von Kanälen (channels) durch Server und Client
❙ Datenaustausch in JSON
❙ Aufbau einer permanenten Verbindung durch Handshake oder einfache one-off Nachrichten
© MAYFLOWER GmbH 2009
17
Server Push/ Comet Architektur
Bayeux Protokoll im Einsatz
❙ Comet- Server benötigt keine Application-Logik❙ Kernaufgabe: Routing der Nachrichten
❙ Die eigentliche Logik kann auf der bevorzugten Plattform bleiben.
❙ Black Box
© MAYFLOWER GmbH 2009
18
Server Push/ Comet Architektur
Bayeux Protokoll im Einsatz
Client Server
HTTP Transport
Multi- Channels
CometDObjekt
BayeuxInstanz
PublisherSubscriber
SubscriberPublisher
© MAYFLOWER GmbH 2009
19
Server Push/ Comet Architektur
Beispiele
❙ Stocker Application❙ Persevere Server (basierend auf Jetty)❙ CometD❙ Dojo im Frontend
❙ Chat❙ Jetty❙ CometD❙ Dojo im Frontend
<script type="text/javascript"> dojo.require("dojox.cometd.RestChannels"); //do some more comet </script>
© MAYFLOWER GmbH 2009
20
Server Push/ Comet Architektur
Zusammenfassung
❙ Bestimmten Anforderungen der Webapplikationen kann AJAX nicht mehr genügen❙ Chat, Spiel, kollaboratives Arbeiten, Umfragen,...❙ Server- und Client-Daten zu unterschiedlich
❙ Comet als Architekur, um Daten vom Server zum Client zu senden❙ Einsatz von Application-Server❙ CometD und Bayeux als nützliche Hilfe
❙ Zukunftsmusik: HTML 5❙ WebSockets
Vielen Dank für die Aufmerksamkeit!
Martin RuprechtMayflower GmbH
Mannhardtstr. 6 80538 München+49 (89) 24 20 54 - [email protected]