Hexagonale Architektur mit Rust

Submitted by Erik Wegner on
Aufmacherbild

Hexagonale Architektur

Der Artikel Master hexagonal architecture in Rust verbindet die beiden Themen Softwareentwurf und Programmiersprache mit den konkreten Ausprägungen.

Die hexagonale Architektur wird auch als Zwiebelarchitektur bezeichnet, denn die geometrische Form ist egal. Wichtiger ist der Unterschied zur traditionellen Schichtenarchitektur, die gern Präsentationslogik, Fachlichkeit und Persistenz als gestapelte Vierecke darstellt.

Gestapelte Schichtenarchitektur

Davon abweichend stellt die hexagonale Architektur den Bereich der Geschäftslogik in den Mittelpunkt. Dieser Bereich wird durch Ports (Beschreibung einer Schnittstelle) mit der Umwelt verbunden. Dazu gibt es konkrete Adapter, die die Schnittstelle für ein Umsystem implementieren.

Hexagonale Architektur

Viele der Ideen sind per se nicht neu, es ist die mentale Vorstellung, die sich ändert. Es geht weg von einer scheinbaren Priorität (von oben nach unten) hin zu der besseren Sichtbarkeit, dass die Geschäftslogik im Kern steht, unabhängig funtkioneren soll und durch konkrete Implementierungen an die Umsysteme über klar trennende Schnittstellen angebunden wird.

Mit Rust

In dynamischen Sprachen ist die Verwendung Interfaces als Schnittstellenbeschreibung sehr leicht möglich. Java hat sich beispielsweise den Ruf erarbeitet, alles erstmal als Interface zu abstrahieren.

Auch Rust bietet die Möglichkeit, über traits zu beschreiben, welche Funktionen ein Objekt bereitstellt. Damit lässt sich zum Testzeitpunkt (Unit Test) eine andere Implementierung verwenden als zum Ausführungszeitpunkt. Die Schwierigkeit entsteht jedoch, dass der Rust-Compiler genau erkennen muss, wie lange das dahinterliegende Objekt lebt. An dieser Stelle setzt der Artikel an und erklärt ein Entwurfsmuster, mit dem die Abstraktion zum Kinderspiel wird und eine verblüffende Ähnlichkeit zu der Schreibweise in Java oder .NET aufweist.