SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
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
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
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
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
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
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
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
Comet- Architektur




                     Server Push/ Comet
                     Architektur

                     © MAYFLOWER GmbH 2009 8
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
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
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
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
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
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
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
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
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
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
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
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
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

Weitere ähnliche Inhalte

Andere mochten auch

Versager
VersagerVersager
VersagerES_ruy
 
Immanuel Kumc
Immanuel KumcImmanuel Kumc
Immanuel Kumcsjundosa
 
Eröffnung des iico2011 von Bernd Völcker
Eröffnung des iico2011 von Bernd VölckerEröffnung des iico2011 von Bernd Völcker
Eröffnung des iico2011 von Bernd VölckerJustRelate
 
SugestõEs De Filmes
SugestõEs  De FilmesSugestõEs  De Filmes
SugestõEs De Filmesculturaafro
 
werrwrwr
werrwrwrwerrwrwr
werrwrwrdierco1
 
E pib für zki ak-el koblenz 20130313
E pib für zki ak-el koblenz 20130313E pib für zki ak-el koblenz 20130313
E pib für zki ak-el koblenz 20130313Jörg Hafer
 
Travaux d' élèves (3ème)
Travaux d' élèves (3ème)Travaux d' élèves (3ème)
Travaux d' élèves (3ème)FrauA
 
Open Data Vorlesung 2015: Digitale Nachhaltigkeit
Open Data Vorlesung 2015: Digitale NachhaltigkeitOpen Data Vorlesung 2015: Digitale Nachhaltigkeit
Open Data Vorlesung 2015: Digitale NachhaltigkeitMatthias Stürmer
 
Verdad y Método 1
Verdad y Método 1Verdad y Método 1
Verdad y Método 1Eli Martz
 
Geschäftsmodell und Nachhaltigkeit - Business Model Innovation - Unternehmens...
Geschäftsmodell und Nachhaltigkeit - Business Model Innovation - Unternehmens...Geschäftsmodell und Nachhaltigkeit - Business Model Innovation - Unternehmens...
Geschäftsmodell und Nachhaltigkeit - Business Model Innovation - Unternehmens...Heinz Peter Wallner
 
Para un-escrito
Para un-escritoPara un-escrito
Para un-escritoLeydy Gil
 
Plantilla icontec objetivos
Plantilla icontec objetivosPlantilla icontec objetivos
Plantilla icontec objetivosJuan Gomez
 

Andere mochten auch (19)

Versager
VersagerVersager
Versager
 
Immanuel Kumc
Immanuel KumcImmanuel Kumc
Immanuel Kumc
 
Eröffnung des iico2011 von Bernd Völcker
Eröffnung des iico2011 von Bernd VölckerEröffnung des iico2011 von Bernd Völcker
Eröffnung des iico2011 von Bernd Völcker
 
Trabajo de compu
Trabajo de compuTrabajo de compu
Trabajo de compu
 
SugestõEs De Filmes
SugestõEs  De FilmesSugestõEs  De Filmes
SugestõEs De Filmes
 
Impulsvortrag führung
Impulsvortrag führungImpulsvortrag führung
Impulsvortrag führung
 
FLORES
FLORESFLORES
FLORES
 
Nickel Bast 070509
Nickel Bast 070509Nickel Bast 070509
Nickel Bast 070509
 
werrwrwr
werrwrwrwerrwrwr
werrwrwr
 
E pib für zki ak-el koblenz 20130313
E pib für zki ak-el koblenz 20130313E pib für zki ak-el koblenz 20130313
E pib für zki ak-el koblenz 20130313
 
Travaux d' élèves (3ème)
Travaux d' élèves (3ème)Travaux d' élèves (3ème)
Travaux d' élèves (3ème)
 
Buekiga(2)
Buekiga(2)Buekiga(2)
Buekiga(2)
 
Tipos de texto
Tipos de textoTipos de texto
Tipos de texto
 
Open Data Vorlesung 2015: Digitale Nachhaltigkeit
Open Data Vorlesung 2015: Digitale NachhaltigkeitOpen Data Vorlesung 2015: Digitale Nachhaltigkeit
Open Data Vorlesung 2015: Digitale Nachhaltigkeit
 
Verdad y Método 1
Verdad y Método 1Verdad y Método 1
Verdad y Método 1
 
Geschäftsmodell und Nachhaltigkeit - Business Model Innovation - Unternehmens...
Geschäftsmodell und Nachhaltigkeit - Business Model Innovation - Unternehmens...Geschäftsmodell und Nachhaltigkeit - Business Model Innovation - Unternehmens...
Geschäftsmodell und Nachhaltigkeit - Business Model Innovation - Unternehmens...
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Para un-escrito
Para un-escritoPara un-escrito
Para un-escrito
 
Plantilla icontec objetivos
Plantilla icontec objetivosPlantilla icontec objetivos
Plantilla icontec objetivos
 

Ähnlich wie Server Push Comet

Restful Frontend-Architecture
Restful Frontend-ArchitectureRestful Frontend-Architecture
Restful Frontend-ArchitectureSandro Sonntag
 
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentationbneselov
 
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem KundenprojektWebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem KundenprojektOPITZ CONSULTING Deutschland
 
Citrix Provisioning Server die mächtige Komponente im Rechenzentrum
Citrix Provisioning Server die mächtige Komponente im RechenzentrumCitrix Provisioning Server die mächtige Komponente im Rechenzentrum
Citrix Provisioning Server die mächtige Komponente im RechenzentrumDigicomp Academy AG
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaQAware GmbH
 
Cloud Computing Übersicht
Cloud Computing ÜbersichtCloud Computing Übersicht
Cloud Computing Übersichtartgrohe
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 
MK2014 FileMaker Server 13 by Thomas Hahn
MK2014 FileMaker Server 13 by Thomas HahnMK2014 FileMaker Server 13 by Thomas Hahn
MK2014 FileMaker Server 13 by Thomas HahnVerein FM Konferenz
 
Bidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenBidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenMarco Rico Gomez
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
DNUG 2014 Herbstkonferenz: Moderne Architektur - Hochskalierbare Anwendungsar...
DNUG 2014 Herbstkonferenz: Moderne Architektur - Hochskalierbare Anwendungsar...DNUG 2014 Herbstkonferenz: Moderne Architektur - Hochskalierbare Anwendungsar...
DNUG 2014 Herbstkonferenz: Moderne Architektur - Hochskalierbare Anwendungsar...JRibbeck
 
Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?GFU Cyrus AG
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2Jonathan Weiss
 
Windows Azure für Entwickler V1
Windows Azure für Entwickler V1Windows Azure für Entwickler V1
Windows Azure für Entwickler V1Sascha Dittmann
 
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...Christian Wenz
 

Ähnlich wie Server Push Comet (20)

Vorstellung von Ember.js
Vorstellung von Ember.jsVorstellung von Ember.js
Vorstellung von Ember.js
 
Restful Frontend-Architecture
Restful Frontend-ArchitectureRestful Frontend-Architecture
Restful Frontend-Architecture
 
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
 
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem KundenprojektWebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
 
Citrix Provisioning Server die mächtige Komponente im Rechenzentrum
Citrix Provisioning Server die mächtige Komponente im RechenzentrumCitrix Provisioning Server die mächtige Komponente im Rechenzentrum
Citrix Provisioning Server die mächtige Komponente im Rechenzentrum
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
 
Cloud Computing Übersicht
Cloud Computing ÜbersichtCloud Computing Übersicht
Cloud Computing Übersicht
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
MK2014 FileMaker Server 13 by Thomas Hahn
MK2014 FileMaker Server 13 by Thomas HahnMK2014 FileMaker Server 13 by Thomas Hahn
MK2014 FileMaker Server 13 by Thomas Hahn
 
Bidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenBidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für Webanwendungen
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
DNUG 2014 Herbstkonferenz: Moderne Architektur - Hochskalierbare Anwendungsar...
DNUG 2014 Herbstkonferenz: Moderne Architektur - Hochskalierbare Anwendungsar...DNUG 2014 Herbstkonferenz: Moderne Architektur - Hochskalierbare Anwendungsar...
DNUG 2014 Herbstkonferenz: Moderne Architektur - Hochskalierbare Anwendungsar...
 
Mdd Days 2009 Handout
Mdd Days 2009   HandoutMdd Days 2009   Handout
Mdd Days 2009 Handout
 
Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2
 
Windows Azure für Entwickler V1
Windows Azure für Entwickler V1Windows Azure für Entwickler V1
Windows Azure für Entwickler V1
 
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
 

Mehr von Mayflower GmbH

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mayflower GmbH
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: SecurityMayflower GmbH
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftMayflower GmbH
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientMayflower GmbH
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingMayflower GmbH
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...Mayflower GmbH
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyMayflower GmbH
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming MythbustersMayflower GmbH
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im GlückMayflower GmbH
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefernMayflower GmbH
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsMayflower GmbH
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalierenMayflower GmbH
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastMayflower GmbH
 

Mehr von Mayflower GmbH (20)

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
 
Why and what is go
Why and what is goWhy and what is go
Why and what is go
 
Agile Anti-Patterns
Agile Anti-PatternsAgile Anti-Patterns
Agile Anti-Patterns
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Produktive teams
Produktive teamsProduktive teams
Produktive teams
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native Client
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debugging
 
Usability im web
Usability im webUsability im web
Usability im web
 
Rewrites überleben
Rewrites überlebenRewrites überleben
Rewrites überleben
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript Security
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
 
Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesign
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming Mythbusters
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im Glück
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefern
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 Sprints
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalieren
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce Breakfast
 

Server Push Comet

  • 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. 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. 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. 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. 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. 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. 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. Comet- Architektur Server Push/ Comet Architektur © MAYFLOWER GmbH 2009 8
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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