Cassini-Webserver
# Cassini-Webserver

Cassini ist ein Open-Source-Webserver (unter Ms-PL) von Microsoft. Das Projekt ist als technologische Studie gedacht, mit der gezeigt werden soll, wie einfach die Integration einer Unterstützung von ASP.NET für eigene Projekte ist.

## Aufbau

Der Quelltext des Webservers ist in C# geschrieben und besteht aus neun Quellcode-Dateien. Die wichtigen Funktionen und Klassen befinden sich in 4 der 9 Dateien:

* Server.cs: Klasse zur Definition eines Webservers mit Funktionen zum Starten und Stoppen, leitet die Arbeit an die Host-Klasse weiter.
* Host.cs: Verwaltung der Verbindungen mit den Clients, leitet eingehende Anfragen an die Connection-Klasse weiter
* Connection.cs: Abstrakte Darstellung einer Anfrage, leitet die Arbeit an die Request-Klasse weiter.
* Request.cs: Verarbeitet die Anfragen in Zusammenarbeit mit der .Net-Framework-Klasse HTTP Runtime.

## Funktionen und Einschränkungen

Cassini unterstützt HTTP/1.1, viele der Standard-MIME-Typen und natürlich ASP.NET. Da der Server quelloffen ist, kann der Quelltext von jedermann beliebig verändert werden. Somit können einige bestimmte Zeilen auskommentiert werden, um auch vom Netzwerk aus (also nicht mehr nur lokal) auf den Server zugreifen zu können.

Da der Webserver nur zu Demonstrationszwecken dienen soll, ist er recht einfach gehalten und beherrscht viele der für Webserver üblichen Funktionen nicht. Cassini erlaubt lediglich eine Web-Anwendung pro Port und auch nur einen Port pro Instanz. Außerdem unterstützt er keine sicheren Verbindungen über SSL und besitzt nicht die Möglichkeit zur Authentifizierung (Basic, Digest etc.). Die standardmäßige Beschränkung auf lokale Anfragen kann wie oben erwähnt durch Auskommentierung einiger Zeilen im Code beseitigt werden.

