39
1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar “Webserver- Technologien” Prof. Robert Tolksdorf Freie Universität Berlin, Institut für Informatik

1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

Embed Size (px)

Citation preview

Page 1: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

1/39

JigsawDer Referenz-Server des W3C

Richard Cyganiak, 27. Mai 2003

Seminar “Webserver-Technologien”Prof. Robert TolksdorfFreie Universität Berlin, Institut für Informatik

Page 2: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

2/39

Inhalt

• Jigsaw– Allgemeines

– Architektur

• HTTP– PUT

– Content Negotiation

– Transfer encodings

Page 3: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

3/39

Teil 1: Jigsaw

• Referenz-Webserver des W3C• Open Source, Java• begonnen 1996• Entwicklung hauptsächlich am INRIA

– Leiter: Yves Lafon

• vollständige HTTP/1.1-Implementierung• Distributionen: Webserver, Proxy, WebDAV• “Jigsaw” engl. Puzzle, Puzzlestück

Page 4: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

4/39

Referenz-Server

• Plattform zum Experimentieren für Forscher– Lesbarer Code

– Ausführlich dokumentierte APIs

– Programmierhandbuch wichtiger als Benutzerhandbuch

• Flexibilität und Erweiterbarkeit wichtiger als Produktionstauglichkeit

• Java: Portabilität, Erweiterbarkeit

Page 5: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

5/39

Einige Highlights

• Exportiert Objekte, nicht Dateien• Multi-Protokoll-Server• Push- und Streaming-Protokolle• Unterstützt kollaborative Arbeit (PUT, CVS)• Administrationstool JigAdmin• Gute Performance dank minimierter Dateizugriffe

und intelligentem Caching• Moderne Architektur (1996)

Page 6: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

6/39

Testplattform

• HTTP/1.1• HTTP-NG• Servlets• PICS• WebDAV• CC/PP• Photo RDF

Page 7: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

7/39

Jigsaw in der Produktion

• jigsaw.w3.org– Jigsaw-Demonstration

– HTTP/1.1-Demonstration

– CSS-Validator (http://jigsaw.w3.org/css-validator/)

• lists.w3.org– Archiv für alle Mailinglisten des W3C

• Sonst nichts?

Page 8: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

8/39

Architektur

• Herkömmliche Webserver-Architekturen• Jigsaw: Java-Objekte statt Dateien exportieren

– Resource: ein zu exportierendes Objekt

– Frame: veröffentlicht Resource für bestimmtes Protokoll

– Filter: verändert Resources

– Indexer: erzeugt automatisch Resources, Frames, Filters

• Vor- und Nachteile

Page 9: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

9/39

Dateisystem

http://example.org/icons/small/

URLs 1:1

mod_rewrite

Dateisystem-orientierte Server

• 1:1-Abbildung von URLs auf Dateien

Page 10: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

10/39

Servlet-Container

• Handkonfigurierte Abbildung von großen URL-Räumen auf einzelne Servlets

• PHP manchmal ähnlich

org.example.servlet1/view?.......

http://example.org/view?foo=barURLs

org.example.servlet2/edit?.......

Page 11: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

11/39

Object-Publishing Server

• Webserver exportiert Objekte

• Ein Objekt verantwortlich für GET, POST, PUT, Administrationsdienste einer URL

• Jigsaw, Zope

http://example.org/icons/small/

URLs 1:1

Objekte

Page 12: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

12/39

Jigsaw: Ressourcen

• Von Jigsaw exportierte Objekte heißen Ressourcen• Beispielklassen:

– FileResource

– ServletWrapper

– CvsRootDirectory

– ZipFileResource

– PasswordEditor

– (CGI, Proxy)

• Ressourcen sind persistent

Page 13: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

13/39

Ressourcenerzeugung: Indexer

• Manuell über JigAdmin• Automatisch über Indexer

– default-indexer

– servlet-indexer

– zip-indexer

• Indexer erzeugen und konfigurieren Ressourcen– z.B. Content-Type und Max-Age setzen in

Abhängigkeit vom Dateityp

• Indexing-Phase

Page 14: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

14/39

Ressourcen exportieren: Frames

• Ressourcen haben assoziierte Frames• Frames veröffentlichen Ressourcen über ein

bestimmtes Protokoll– HTTPFrame

– PostableFrame

– RelocatedFrame

– DAVFrame

• Mitgeliefert: HTTP, WebDAV, CC/PP

Page 15: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

15/39

Filter

• Verändern Ressourcen (Anfrage und/oder Antwort)• An Frame gebunden, da meist protokollspezifisch• Beispiele:

– AuthFilter

– GzipFilter

– CounterFilter

– LogFilter

– TidyPutFilter

– HourLimiterFilter

Page 16: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

16/39

Demo

Page 17: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

17/39

Vorteile

• Resource-Objekt kümmert sich um alle Arten von Anfragen an eine URL

• Filter ermöglichen flexible Konfiguration• Trennung zwischen Ressourcen und

Protokollmechanik• Server für mehrere Protokolle möglich

Page 18: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

18/39

Nachteile

• Administrationsaufwand durch Indexer• Fehleranfälligkeit durch vollständige Serialisierung• Zuständigkeitsverteilung zwischen Ressourcen und

Frames oft unklar• Sinn der Multiprotokollfähigkeit, wenn man nur

HTTP will?

Page 19: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

19/39

Subjektive Bemerkungen

• Coding Standards!• Dokumentation

– Superwichtig: Beschreibung der Funktion von Klassen

– Superwichtig: gut dokumentierte Interfaces für wichtige Konzepte

• Vermeide “Tangled Hierarchy”– “AttributeHolder” als Oberklasse für fast alles

– Folge: grundlegende Konzepte sind komplexe Klassen mit viel geerbtem Verhalten

Page 20: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

20/39

Jigsaw: Zusammenfassung

• Plattform zum Experimentieren• Flexibel und erweiterbar• Vollständig objektorientiert• Administrationstool• Vollständige HTTP/1.1-Implementierung

Page 21: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

21/39

Teil 2: HTTP

• PUT• Content Negotiation• Transfer Encodings

Page 22: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

22/39

HTTP in 5 Minuten

• Textprotokoll• Anfrage/Antwort• Anfrage besteht aus

– Request Line (Method, URL, HTTP-Version)

– Reuest Headern

– (Request Entity)

• Antwort besteht aus– Response Line (Status Code)

– Response Headern

– Response Entity

Page 23: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

23/39

HTTP ausprobieren

• Unix– telnet www.example.com 80

• Windows– putty.exe im Raw-Modus

Page 24: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

24/39

Beispiel

GET /Protocols/ HTTP/1.1Host: www.w3.org

HTTP/1.1 200 OKDate: Mon, 26 May 2003 03:59:15 GMTServer: Apache/1.3.27 (Unix) PHP/4.2.3Cache-Control: max-age=21600Expires: Mon, 26 May 2003 09:59:15 GMTLast-Modified: Wed, 16 Apr 2003 09:19:33 GMTETag: "3e9d2025"Accept-Ranges: bytesContent-Length: 20975Content-Type: text/html; charset=iso-8859-1

<html>.....

Page 25: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

25/39

HTTP Methoden

• GET• POST• HEAD• PUT• DELETE• OPTIONS• TRACE

Page 26: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

26/39

Status Codes

• 200 OK• 404 Not Found• 400 Bad Request• und viele andere

– http://www.w3.org/Protocols/rfc2616/rfc2616.html

Page 27: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

27/39

Die PUT-Methode

• Lege Request-Entity unter der angegebenen URL ab• Von Servern selten angeboten• Apache

– Skript festlegen, welches PUT-Anfragen behandelt

– oder mod_put nachrüsten

• Hat schon in TimBL’s ersten Browser gefehlt

Page 28: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

28/39

Anwendungen für PUT

• Sehr praktisch für das Bearbeiten von Webseiten– Mozilla, Amaya

• Zusammen mit WebDAV: Netzwerk-Dateisystem

Page 29: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

29/39

Content Negotiation

• Ressource ist in mehreren Sprachen oder Dateiformaten verfügbar

• Klient und Server handeln beste Variante aus• Serverseitige Content Negotiation

– Server entscheidet über beste Variante

– Klient kann mit Accept*-Headern helfen

• Klientseitige Content Negotiation– Server liefert Liste mit allen Möglichkeiten als HTML

– Klient entscheidet (manuell oder automatisch)

Page 30: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

30/39

Accept*-Header

• Accept (z.B. text/html)• Accept-Language (z.B. de)• Accept-Charset (z.B. ISO-8859-1, utf-8)• Accept-Encoding (z.B. gzip, chunked)

Page 31: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

31/39

ConNeg-Beispiel (1)

Accept: text/xml,application/xml,

application/xhtml+xml,text/html;q=0.9,

text/plain;q=0.8,video/x-mng,

image/png,image/jpeg,image/gif;q=0.2,

text/css,*/*;q=0.1

Accept-Language: en-us, en;q=0.50

Accept-Encoding: gzip, deflate, compress;q=0.9

Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66

Page 32: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

32/39

ConNeg-Beispiel (2)

• Ressource ist in zwei Sprachen verfügbar– de;q=1.0– en;q=0.33

• Accept-Language: en– bekommt englisch

• Accept-Language: en;q=1.0, de;q=0.5– bekommt deutsch

• Accept-Language: en;q=1.0, de;q=0.2– bekommt englisch

Page 33: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

33/39

Anwendungen für ConNeg

• Sprache auswählen• Theoretisch: Klient und Server verhandeln über

optimales Format• Senden von XHTML 1.1 and “gute” Browser• Web Services nach der REST-Architektur• Semantic Web (Accept: application/rdf+xml)

Page 34: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

34/39

Encodings

• Content-Encodings (Codierung der Entität)– gzip (GNU zip)

– compress (LZW)

– deflate

– identity (nur für Accept-Encoding)

– ...

• Transfer-Encodings (Codierung der Nachricht)– chunked

– gzip

– ...

Page 35: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

35/39

Exkurs: Ein Problem bei dynamischen Inhalten

• Werte einiger Header erst spät bekannt– Last-Modified, Cookie, Location

• kann erst Inhalt schicken, wenn alle Header feststehen– Alle Header vor Sendung des ersten Bytes ermitteln

– Oder gesamte Ausgabe puffern

• Wäre schön: optional weitere Header am Ende der Datei verschicken

• Problem: Woher weiß Klient, wo Inhalt zu Ende ist?

Page 36: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

36/39

Transfer-Encoding: chunked

• Sende:1. Kopf mit Headern

2. Inhalt blockweise mit Längenangaben für jeden Block

3. Optional weitere Headerzeilen (“Trailer”)

• Unterstützung für HTTP/1.1-Klienten Pflicht• Zustellung des Trailers kann wegen HTTP/1.0-

Klienten nicht garantiert werden

Page 37: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

37/39

Anwendungen für Encodings

• gzip– Wenn CPU-Zyklen billig und Transfervolumen teuer

– Proxies

• chunked– Wenn Länge der Nachricht zu Beginn unbekannt

– dynamische Inhalte mit Trailer oder Keep-Alive

Page 38: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

38/39

HTTP: Zusammenfassung

• PUT– Praktische Methode zum Bearbeiten von Web-Inhalten– Von wenigen Servern unterstützt

• Content Negotiation– Automatische Auswahl von Sprache oder Format– Fähigkeiten des Klienten und Benutzereinstellungen

• Encodings– Komprimieren des Datenstroms mit gzip– Stückweises Senden mit chunked, wenn Gesamtgröße

unbekannt

Page 39: 1/39 Jigsaw Der Referenz-Server des W3C Richard Cyganiak, 27. Mai 2003 Seminar Webserver-Technologien Prof. Robert Tolksdorf Freie Universität Berlin,

39/39

Quellen

• Jigsaw Website:http://www.w3.org/Jigsaw/

• Jigsaw Demo Site:http://jigsaw.w3.org/

• HTTP 1/1 Spezifikationhttp://www.w3.org/Protocols/rfc2616/rfc2616