server push comet

21
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

Upload: mayflower-gmbh

Post on 02-Jul-2015

6.018 views

Category:

Technology


0 download

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

TRANSCRIPT

Page 1: Server Push Comet

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

Page 2: Server Push Comet

© 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

Page 3: Server Push Comet

© 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,...

Page 4: Server Push Comet

© 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

Page 5: Server Push Comet

© 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)

Page 6: Server Push Comet

© 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

Page 7: Server Push Comet

© 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

❙ Facebook

Page 8: Server Push Comet

© MAYFLOWER GmbH 2009

8

Server Push/ Comet Architektur

Comet- Architektur

Page 9: Server Push Comet

© 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

Page 10: Server Push Comet

© 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)

Page 11: Server Push Comet

© 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)

Page 12: Server Push Comet

© 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

Page 13: Server Push Comet

© 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()

Page 14: Server Push Comet

© 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

Page 15: Server Push Comet

© 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

Page 16: Server Push Comet

© 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

Page 17: Server Push Comet

© 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

Page 18: Server Push Comet

© MAYFLOWER GmbH 2009

18

Server Push/ Comet Architektur

Bayeux Protokoll im Einsatz

Client Server

HTTP Transport

Multi- Channels

CometDObjekt

BayeuxInstanz

PublisherSubscriber

SubscriberPublisher

Page 19: Server Push Comet

© 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>

Page 20: Server Push Comet

© 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

Page 21: Server Push Comet

Vielen Dank für die Aufmerksamkeit!

Martin RuprechtMayflower GmbH

Mannhardtstr. 6 80538 München+49 (89) 24 20 54 - [email protected]