Code Competition: Paralleler Webserver
Erstelle Deinen eigenen parallelisierten Webserver!
Update 28.03.2016: Alle Abgaben sind ausgewertet. Die Gewinner wurden benachrichtigt und alle Teilnehmer haben ein persönliches Feedback zu Ihrer Abgabe erhalten.
Die Gewinner findest Du hier, sie stellen sich und ihre Abgabe zudem in Kürze im Blog vor.
- Platz: Robin
- Platz: Florian
- Platz: Matthias
Vielen Dank für Eure zahlreiche Teilnahme und die wirklich interessanten Webserver!
{ABOUT}
In dieser Code Competition wollen wir gemeinsam einen Webserver entwickeln, der mit Hilfe von Threads paralles Arbeiten Abarbeiten ermöglicht.
Wieso parallel?
Ein Server stellt einen Service bereit, den ein Client anfordern kann. Ein nicht-paralleler Server, also ohne Threadunterstützung, kann Anfragen innerhalb eines Prozesses nur seriell abarbeiten. Das heißt, wenn ein Client mit dem Server verbunden ist, ist er beschäftigt und kann keine weiteren Anfragen annehmen.
Man könnte einen Server nun mit vielen Prozessen starten - oder man konzipiert den Server direkt so, dass er eine parallele Bearbeitung von Anfragen durch Threads ermöglicht.
{INPUT}
Als Abgabe benötigen wir den Quellcode deines Servers sowie eine kompilierte, ausführbare Datei.
Du kannst Deine Lösung in C, C++, C#, Java, JavaScript, Haskell oder Python abgeben.
{REQUIREMENTS}
- Dein Webserver muss alle Dateien in einem eingestellten "home directory" auflisten können (Directory Listing).
- Dein Webserver muss Anfragen auf Port 80 (localhost) bedienen (Stichwort: Sockets)
- Dein Webserver muss parallelisiert und threadbasiert laufen. Das heißt, weitere Anfragen, während bereits eine Anfrage bearbeitet wird, müssen in einem neuen Thread bearbeitet werden (weitere Infos z.B. apache multi-threaded)
- Dein Webserver muss thread-safe arbeiten Infos: Thread-Safety
{REVIEW}
Worauf achten wir bei der Bewertung Deines Programms?
- Funktionalität: Lässt sich das Programm ausführen? Tut es, was es soll?
- Code-Qualität: Ist der Code sinnvoll strukturiert und effizient?
- Code-Lesbarkeit: Lässt sich der Quellcode nachvollziehen?
- Dokumentation: Verstehen wir die Bedienung des Programms? Ist der Code kommentiert?
- Zusätzliche Features: Auch besonders nützliche GUIs oder sinnvolle Zusatzfeatures fließen etwas mit in die Wertung ein ;)
{POST}
Schade, die Abgabefrist ist leider abgelaufen :(
Aber schau Dir die aktuelle Code Competition an!
Zur aktuellen Code Competition