The Yesod Framework

Ein Webrahmenwerk in Haskell

Fazit

Zusammenfassung

Das Yesod-Framework richtet sich an Entwickler, welche ihre Webanwendung unter Einsatz von Haskell entwickeln möchten oder denen die Ansprüche der in der Industrie gängigen Webframeworks nicht genügen. In den Grundlagen wurde die Philosophie von Yesod beschrieben. Webanwendungen sollen bei performanter Ausführung von den Vorteilen, welche Haskell mit sich bringt, profitieren. Das Yesod-Framework verfolgt das MVC-Muster und verfügt aufgrund der Differenzierung unterschiedlicher Perspektiven über eine hohe Übersichtlichkeit. Die Installation erfolgt problemlos und systemunabhängig. Projektgerüste lassen sich mithilfe eines Einrichtungsassistenten auf einfache Weise erzeugen.

Yesod bringt über das Hamlet-Paket zugunsten des anforderungsgerechten Einsatzes von Templates über Quasi-Quotations die Templatesprachen Hamlet, Cassius, Lucius und Julius ins Spiel. Die Einbindung variabler Daten gelingt durch den Mechanismus der Interpolationen. Das Konzept der Widgets dient in diesem Zusammenhang der Vereinigung der drei unterschiedlichen Frontendsprachen und schafft einen Sichtbarkeitsbereich, welcher es Entwicklern ermöglicht, an jedem Punkt der Webanwendung die passenden Beschreibungen einzufügen.

Die Yesod-Typklasse bildet eine zentrale Anlaufstelle für globale Einstellungen für die Webanwendung. Weiterhin stellt sie hilfreiche Funktionen zur Verfügung, deren Überschreibung teilweise von Nutzen ist. Das Routingsystem von Yesod fungiert als Front Controller zur Weiterleitung von Anfragen für die Verarbeitung durch entsprechende Handler. Die Beschreibung erfolgt auch hier durch Quasi-Quotations. Der Kontext, in welchem sich die Webapplikation bei der Bearbeitung in Handlern befindet, wird durch GHandler-Monaden verallgemeinert.

Die Art der Unterstützung von Formularen in Yesod orientiert sich an dem Konzept der Formlets. Es werden dabei Möglichkeiten zur Definition von Formulardaten und -felder bereit gestellt. Auch Funktionen sowohl für die automatische Generierung des Markups, als auch zur Abhandlung der Nutzerdatenvalidierung unterstützen den Entwickler bei der Implementierung von Formularen.

Das Paket «ClientSession» sorgt für die bequeme Speicherung von Sitzungsdaten. Eine beigefügte Signatur schützt hierbei vor Hijacking-Attacken. Ein Cookie, welcher bei jeder Anfrage versendet wird, ermöglicht in diesem Zusammenhand die Auslagerung der Datenhaltung an den Client, so dass keine Informationen über Nutzerzustände auf Serverseite verwaltet werden müssen. Sind Daten über einen langfristigen Zeitraum zu speichern, ist die Interaktion mit einem externen Speichermedium wie einer Datenbank notwendig. Die Erweiterung «Persistent» bietet durch Abstraktion vom schließlich eingesetzten Datenbankbackend eine unabhängige und flexible Implementierung dieser Speicheranbindung. Über die Quasi-Quotation-Definition von Entitäten erfolgt die vollständige Beschreibung, welche für die automatische Generierung von Statements zum Aufbau oder zur Verwaltung der entsprechenden Datenbanktabellen erforderlich ist. Sowohl bei der Filterung, der Suche und dem Vergleich von Einträgen, als auch bei der Definition von Relationen spielt Yesod dabei die Stärken von Haskell aus.

Ausblick

Neben den betrachteten Funktionen von Yesod existieren noch zahlreiche weitere Möglichkeiten, welche in dieser Ausarbeitung nicht im Fokus der Analyse standen. So gibt es beispielsweise im Kontext der Interaktion mit Speichern zur langfristigen Datenhaltung eine Möglichkeit zur automatischen Formulargenerierung, ausgehend von einer bestimmten Datenbanktabelle. Weiterhin kann auch auf direktem Wege SQL zur Ausführung im Datenbankverwaltungssystem weitergeleitet werden. Ein weiteres typisches Aufgabengebiet von Webframeworks ist die Authentifizierung bzw. die Autorisierung. Mithilfe dieses Konzepts kann eine Differenzierung derjenigen Personen erfolgen, welchen Zugang zu einem geschützen Bereich der Website gewährt wird. Weitere interessante Funktionsbereiche bestehen in dem Versenden von E-Mails, dem Testen der Webanwendung, sowie Möglichkeiten zur multilingualen Unterstützung. Von nicht geringer Bedeutung ist schließlich die Frage, auf welche Weise eine mit Yesod entwickelte Webapplikation deployt werden kann. Geschickterweise setzt das Yesod-Framework auf das Web Application Interface, kurz WAI. Neben dem eigenen Webserver Warp kann die Ausführung auf anderen Webservern auch über FastCGI, CGI oder Webkit erfolgen, um nur einige zu nennen.

Die Zukunftsaussichten von Yesod sind von zwei Perspektiven aus zu betrachten. Zum einen ist die Weiterentwicklung des Frameworks in vollem Gange. Dies bedeutet, dass auch zukünftig Funktionalitäten weiterentwickelt, ausgebaut oder ergänzt werden. Das bestehende Gesamtpaket angebotener Möglichkeiten überzeugt und hat das Potential, mit den marktführenden Produkten zu konkurrieren. Je mehr Personen und Organisationen das Projekt durch Nutzung oder Mitarbeit unterstützen, desto besser wird es dem Framework gelingen, sich zu etablieren. Auf der anderen Seite handelt es sich bei Yesod in der jetzigen Situation noch um ein Nischenprodukt, bei dem von Michael Snoyman als Kopf des Frameworks fast die alleinige Verantwortung getragen wird. Von hoher Bedeutung wird auch der Faktor sein, inwieweit Unternehmen und Entwickler dazu bereit sind, angesichts der üppigen Auswahl an Alternativen für die Webentwicklung auf Haskell zu setzen. Trotz der zahlreichen Vorteile wirkt die für viele Entwickler ungewohnte Herangehensweise bei der funktionalen Programmierung abschreckend, weshalb oftmals eher zu Standardlösungen gegriffen wird.