Suche
Bon appétit

Macaron – ein modulares Web Framework für Go

Dominik Mohilo

© Macaron

Die Programmiersprache Go von Google erfreut sich einer stetig wachsenden Beliebtheit. Bald wird Go 1.9 das Licht der Welt erblicken. Mittlerweile gibt es auch eine Vielzahl an Frameworks, insbesondere an Web Frameworks, für die „Golang“. Wir haben uns einen der unbekannteren Vertreter, Macaron, einmal genauer angesehen.

Hintergrund

Martini, Beego, Gorilla und wie sie alle heißen: Web Frameworks gibt es für Googles C-Alternative inzwischen viele. Etliche der Frameworks sind populär, aber wenige richtig zufriedenstellend, wenn man den Diskussionen auf Reddit Glauben schenkt. Zu aufgebläht, zu langsam, zu unhandlich finden Entwickler die unterschiedlichen Web Frameworks für Go. Das Resultat? Sie nutzen lieber weiterhin die Go Standardbibliothek.

Anders scheint es bei dem bislang eher unbekannten Maracon zu sein. Das modulare Web Framework setzt auf dem oben erwähnten Martini auf und wurde von den Entwicklern als Alternative für Martini zusammengestellt. Grund hierfür war laut Angaben der Macaron-Erfinder Martinis zu minimalistischer Ansatz und die zu vielen Reflections, die die Performanz negativ beeinflussten.

Features

Zu Macarons Features zählen unter anderem die Möglichkeit, Template-Dateien während der Laufzeit dynamisch zu wechseln und die durch inject angetriebene Dependency Injection. Ein weiterer wichtiger Aspekt, den Macaron adressiert, ist die Geschwindigkeit. Der Multi-Tree-Router des Frameworks, der den Standardrouter ersetzt, soll deutlich schneller laufen (hier findet sich ein Benchmark-Vergleich von verschiedenen Go Frameworks).

Das modulare Design von Macaron erlaubt es nutzern, neue Features in Form sogenannter Middlewares einfach hinzuzufügen oder wieder zu entfernen. Manche Services werden hingegen als Core Servies in die Macaron-Anwendungen injiziert, wodurch sie ohne weiteres Zutun genutzt werden können. So können sie quasi von Haus aus als Handler-Parameter im Code eingebaut werden. Diese Handler sind Herz und Seele von Macaron und man versteht darunter praktisch jede Art von aufrufbarer Funktion, etwa:

m.Get("/", func() string {
    return "hello world"
})

Auch nicht-anonyme Funktionen sind für die Nutzung in multiplen Routes:

m.Get("/", myHandler)
m.Get("/hello", myHandler)

func myHandler() string {
    return "hello world"
}

Und natürlich kann eine Route auch mehrere Handler haben – so viele wie der Nutzer wünscht:

m.Get("/", myHandler1, myHandler2)

func myHandler1() {
    // ... do something
}

func myHandler2() string {
    return "hello world"
}

Weitere Informationen zu Macaron, unter anderem warum das Logo einen Drachen zeigt und nicht eine französische Süßspeise, gibt es in der offiziellen Dokumentation, auf GitHub und natürlich auf der Homepage des Frameworks.

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.