Netzwerkprogrammierung - Erweiterungen

Martin Kompf

Die Weiterentwicklung der in den vorangegangenen Artikeln beschriebenen Client/Server-Anwendung stellt den Programmierer vor eine Reihe von Herausforderungen. Zu deren Bewältigung bedient man sich am besten aus bestehenden Lösungen; stellvertretend für diese wird hier das ADAPTIVE Communication Environment (ACE) vorgestellt.

Bisher wurde in den Artikeln Netzwerkprogrammierung Teil 1 - Client und Teil 2 - Server die Programmierung einer einfachen Client/Server-Anwendung in C beschrieben. Damit läßt sich die Art und Weise des Datenaustauschs über ein Netzwerk mittels eines definierten Protokolls (hier HTTP über TCP/IP) und einer vorhandenen Programmierschnittstelle (im Beispiel die Socket-API) gut demonstrieren. Bis zur Entwicklung einer «richtigen» Applikation ist es allerdings noch ein weiter Weg, verschiedene Anforderungen an eine professionell erstellte Software werden noch nicht erfüllt:

Bei genauerer Analyse dieser Anforderungen wird man feststellen, dass sie keinesfalls nur auf den konkreten Anwendungsfall eines Webservers zutreffen. Vielmehr wird man bei fast jeder anspruchsvollen Netzwerkapplikation mit diesen Themen konfrontiert werden. Es zeigt sich, dass die Arbeitsweise fast jeder Anwendung immer den gleichen Mustern (engl. Pattern) folgt. Was liegt also näher als die Idee, zunächst Software zu schreiben, die die Komponenten einer allgemeinen Netzwerkapplikation nach diesen Mustern realisiert! Die konkrete Anwendung - sei es ein Webserver, Fileserver oder Teil eines Datenbankservers - ließe sich dann aus den vorgefertigten Komponenten relativ schnell und einfach «zusammenschrauben».

Zum Glück haben sich schon viele kluge Leute diese Gedanken gemacht und solche Entwurfsmuster für fast alle Bereiche der Softwareentwicklung realisiert. Beispielhaft sei an dieser Stelle das ADAPTIVE Communication Environment (ACE(TM)) erwähnt. Dieses frei verfügbare und als Open Source vorliegende Framework beinhaltet die meisten für einen Netzwerkserver notwendigen Komponenten, die bei der Lösung der oben genannten Anforderungen helfen können:

Ein Beispiel, wie die vom ACE gelieferten Komponenten zur Entwicklung eines kompletten, hoch performanten und portablen Webservers verwendet werden können, ist das Projekt des JAWS Adaptive Web Server.