c't 9/2023
S. 150
Wissen
Webservices mit C++
Bild: AVR SCR, stock.adobe.com | Bearbeitung: c’t

Automatischer Weichensteller

Webservices mit C++, Teil 3: Routing von Anfragen

Nicht der Triebfahrzeugführer entscheidet darüber, an welchem Gleis der Zug einfährt, sondern der Fahrdienstleiter im Stellwerk. Ein zentral gesteuertes Routing von Anfragen soll nun der in den beiden vorausgegangenen Teilen entstandene Webservice dazulernen. Wir zeigen, wie der Code dabei an Ordnung gewinnt.

Von Oliver Lau

Dem Beispiel-Webservice aus den beiden vorangehenden Teilen dieser Serie mangelt es ein wenig an Übersichtlichkeit, obwohl er nur ein paar Hundert Zeilen umfasst. Es fängt damit an, dass er Anfragen in einer if/else-Kaskade nach URL-Pfad und HTTP-Methode unterscheidet und den jeweils passenden Codeblock dazu ausführt [1, 2]. Bei nur zwei, drei möglichen Optionen mag das gerade so noch angehen, aber wenn es mehr werden, verliert man schnell den Überblick.

Obendrein geschieht das alles in einer einzigen Methode, und zwar der Klasse http_worker, die verantwortlich für das Abwickeln sämtlicher Verbindungen zeichnet. Auf einem hochauflösenden Monitor im Hochkantformat kann man den Code der Klasse nur bei einem Schriftgrad von 5 Punkt komplett sehen, was für sich schon ein Grund ist, die Schere anzusetzen, um den einen oder anderen Codeschnipsel woanders hinzuschieben. Schwerer wiegt jedoch, dass der http_worker funktional undurchsichtig ist, weil er gleich drei fundamentale Aufgaben erledigt: Anfragen annehmen, routen und behandeln.

Kommentieren