Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Server Push: Ausliefern von Daten ohne Browser-
Anfrage auf Basis einer Comet-Architektur


Martin Ruprecht,
MAYFLOWER-Don...
Agenda


❙ Client/ Server-Kommunikation mit AJAX
❙ Einführung in Comet
    ❙ Notwendigkeit
❙ Comet-Architektur
   ❙ AJAX v...
Client/ Server- Kommunikation


❙ synchroner Datenaustausch
    ❙ eine GET-Anfrage (Request)
    ❙ eine HTTP-Antwort (Resp...
Client/ Server- Kommunikation


❙ AJAX-Architektur
   ❙ Es findet immer ein Request statt
   ❙ Grenzen von AJAX:
      ❙ C...
Einführung in Comet


❙ „The term "Comet" describes the exchanges between a
  client and a server in which the server, rat...
Einführung in Comet


 ❙ Notwendigkeit
                                                        Verbleib auf
AJAX          ...
Was ist Comet


❙ Eine Architektur, kein Protokoll
❙ Auch Server Push bzw. HTTP Push genannt
❙ Wichtigstes Merkmal: Server...
Comet- Architektur




                     Server Push/ Comet
                     Architektur

                     © MA...
AJAX vs. Comet


 … oder das geht doch mit AJAX auch?


❙ AJAX polling
   ❙ Requests in sehr kurzen Abständen, um Änderung...
Auswirkungen


❙ … auf die Programmierung:
   ❙ der Server triggert die Events
   ❙ Request- / Response-Verhalten
   ❙ Anf...
Herausforderungen


❙ HTTP 1.1
    ❙ max. 2 Verbindungen Browser / Domain
    ❙ Comet: mehrere Verbindungen gleichzeitig
 ...
Technische Umsetzung


❙ Long Polling
   ❙ Request (XHR, iFrame)
   ❙ Server verarbeitet die Anfrage sehr langsam
   ❙ bei...
Technische Umsetzung


❙ Streaming XHR
    ❙ persistente Verbindung von Browser zu Server
    ❙ chunked mode
    ❙ Forever...
Application Server


❙ Inboard
    ❙ Comet ist Bestandteil der Webserver-Architektur (z. B.
      DWR Server Framework)
  ...
Application Server


❙ Outboard
   ❙ Comet ist entkoppelt vom Webserver und läuft auf
     einem eigenen Server
         ❙...
Bayeux Protokoll


❙ Protokoll für Comet / Standardisierung für Comet
❙ Kommunikation zwischen Bayeux-Client und Bayeux Se...
Bayeux Protokoll im Einsatz


❙ Comet- Server benötigt keine Application-Logik
   ❙ Kernaufgabe: Routing der Nachrichten

...
Bayeux Protokoll im Einsatz


Client                                  Server
   Publisher                        Subscribe...
Beispiele


❙ Stocker Application
    ❙ Persevere Server (basierend auf Jetty)
    ❙ CometD
    ❙ Dojo im Frontend
       ...
Zusammenfassung


❙ Bestimmten Anforderungen der Webapplikationen kann
  AJAX nicht mehr genügen
    ❙ Chat, Spiel, kollab...
Vielen Dank für die Aufmerksamkeit!

  Martin Ruprecht
  Mayflower GmbH
  Mannhardtstr. 6
  80538 München
  +49 (89) 24 20...
Nächste SlideShare
Wird geladen in …5
×

Server Push Comet

10.895 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
  • Als Erste(r) kommentieren

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

×