Zurück zur Übersicht


INF  P: Webserver im Eigenbau SGINF
Dozent : Prof. Dr.-Ing. Stefan Edlich   eMail | Homepage
Semester7
Einordnung : Informatik, ProjektSWS4
Sprache : Deutsch Art L
Prüfungsart : PVL2  Credits
Prüfungsform : sonstige schriftliche Arbeit 
Voraussetzungen :  
Querverweise :  
Vorkenntnisse : Java 
Hilfsmittel und Besonderheiten : Ein auch in begrenztem Maße über das Projekt hinausgehendes Interesse und Engagement an der Aufgabenstellung 
Lehrziele :

Sich systematisch einer großen interessanten Aufgabe nähern und diese sauber Programmieren. Hintergrundwissen zu RFCs (speziellen Standards), den Web-Protokollen, Threadprogrammierung, Sockets, Parser und Testmodule. Ziel ist es weiterhin, innerhalb von einem oder mehreren Semestern «den» WebServer für und von der FH-Brandenburg zu entwickeln und diesen auch überregional zu promoten.

 
Lehrinhalte :

Gute Web-Server gibt es bereits. Mit dem Apache Web-Server als kostenlosem Marktführer steht jedem Anbieter von Inhalten ein leistungsfähiges Paket zur Verfügung. Die Breite der verfügbaren Server wie Jetty oder Tomcat, die auch weitere Dienste anbieten, geht bis zu 10k Servern, die als Java jar verfügbar sind. Warum also einen weiteren Server?

Ziel unseres Webservers Namens Tweety ist es, die einfachste Installation, Konfiguration und Administration zur Verfügung zu stellen. Als weitere Randbedingung soll dennoch der RAM-Resourcenverbrauch und die Geschwindigkeit, Skalierbarkeit & Parallelisierbarkeit möglich und gut steuerbar sein. Dies alles in einem höchstens 100k großen jar. Damit würde Tweety eine Nische ausfüllen, die am Markt noch nicht ideal gefüllt ist.

Die Teilnehmer und der Dozent dieser Lehrveranstaltung werden dazu klar umrissene Teilaufgaben übernehmen, deren Ergebnisse von den anderen Kollegen benötigt werden und so quasi wie in einem «realen» Industrieprojekt arbeiten.

Teilgebiete dieses Projektes sind:

* Entwicklung eines Prototypen, der die Browser abhorcht
* Analyse der relevanten RFC-Standards
* Entwurf eines klaren Designs unter Berücksichtigung von Design Patterns
* Verstehen von CharBuffern, Channels und den Selector-Klassen. Tweety wird komplett in java.nio geschrieben.
* Entwicklung von Testklassen, dazu Profiling und Metriken des Web-Servers
* Dokumentation des Web-Servers (die externe Dokumentation wird aus oben genannten Gründen klein sein)
* I/O und Threadmanagement
* Entwicklung eines Parsers und eines Modules zum packen und entpacken der Request und Response-Objekte

Obwohl die Entwicklung eines wirklich leistungsfähigen Web-Servers als großes Projekt zu betrachten ist, werden sich Erfolge in der Grundfunktionalität (einfache Requestbearbeitung) von Tweety recht schnell einstellen. Das Ziel ist es dannach, weiter dranzubleiben und die schwierigen Dinge wie Skalierbarkeit, Clustering, Session-Management / Cookies, und Module für dynamische Verarbeitung (z.B. Weblets, SSI, PHP, Servlets) etc. anzugehen und so Tweety zu einem noch leistungsfähigeren Vogel zu machen.

Entwickelt wird hier unter Eclipse mit diversen hilfreichen PlugIns. Es wird ein eigener CVS-Projektbereich genutzt werden.

 

Literatur : RFCs und Java-Literatur (GoTo Gava 2 oder die Java Insel), java.nio.*, java.lang.Thread  


Zurück zur Übersicht