Server Push Comet

6.712 Aufrufe

Veröffentlicht am

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=103889073354

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
6.712
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2.372
Aktionen
Geteilt
0
Downloads
47
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Server Push Comet

  1. 1. Server Push: Ausliefern von Daten ohne Browser- Anfrage auf Basis einer Comet-Architektur Martin Ruprecht, MAYFLOWER-Donnerstag 06.August 2009 München MAYFLOWER-Donnerstag 24.September 2009 Würzburg
  2. 2. 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 Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 2
  3. 3. 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,... Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 3
  4. 4. Client/ Server- Kommunikation ❙ AJAX-Architektur ❙ Es findet immer ein Request statt ❙ Grenzen von AJAX: ❙ Chat-Anwendungen, Spiele, Live-Daten vom Server Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 4
  5. 5. 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) Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 5
  6. 6. Einführung in Comet ❙ Notwendigkeit Verbleib auf AJAX einer Webseite Zeit zum nächsten Reload Zeit Übersetzt aus: Comet: Making The Web a 2-Way Medium Server Push/ Comet Joe Walker, Direct Web Remoting Lead Developer Architektur © MAYFLOWER GmbH 2009 6
  7. 7. 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 ❙ Facebook Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 7
  8. 8. Comet- Architektur Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 8
  9. 9. 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 Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 9
  10. 10. 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) Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 10
  11. 11. 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) Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 11
  12. 12. 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 Server startAsyncQuery() isQueryFinished() sleep time isQueryFinished() sleep time Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 12
  13. 13. Technische Umsetzung ❙ Streaming XHR ❙ persistente Verbindung von Browser zu Server ❙ chunked mode ❙ Forever Frame (<script> Tag in iframe) Client Server openConnection() sendData() sendData() closeConnection() Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 13
  14. 14. 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 Application Server Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 14
  15. 15. 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 Application CometD Server Server Push/ Comet CometD = Comet Daemon Architektur © MAYFLOWER GmbH 2009 15
  16. 16. 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 Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 16
  17. 17. 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 Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 17
  18. 18. Bayeux Protokoll im Einsatz Client Server Publisher Subscriber Multi- Channels CometD Bayeux Objekt Instanz HTTP Transport Subscriber Publisher Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 18
  19. 19. Beispiele ❙ Stocker Application ❙ Persevere Server (basierend auf Jetty) ❙ CometD ❙ Dojo im Frontend <script type="text/javascript"> dojo.require("dojox.cometd.RestChannels"); //do some more comet </script> ❙ Chat ❙ Jetty ❙ CometD ❙ Dojo im Frontend Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 19
  20. 20. 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 Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 20
  21. 21. Vielen Dank für die Aufmerksamkeit! Martin Ruprecht Mayflower GmbH Mannhardtstr. 6 80538 München +49 (89) 24 20 54 - 1116 martin.ruprecht@mayflower.de

×