Ich hoffe ich konnte einen guten Einblick in Snap geben. Zum Abschluss werde ich nochmal die drei größten Haskell Web Frameworks und deren Hauptkomponenten gegenüberstellen, aber ohne eine große Bewertung abzugeben. Danach zeige ich noch ein paar Benchmarks, die vom Snap Team durchgeführt wurden. Während der Presentation kam auch die Frage auf, ob es Benchmarks gäbe, die eine Datenbank benutzen. Die Aussagekraft solcher Benchmarks halte ich aber nicht für kraftvoll, da sie letzendlich von der Geschwindigkeit der Datenbankimplementierung abhängen und keine Aussage über die eigentliche Geschwindigkeit des Frameworks machen.
Name: | Happstack | Yesod | Snap |
---|---|---|---|
DB: | zunächst lazy I/O, später acid-state | persistent | verschiedene Snaplets |
Template: | div., eigene sind HSP & StringTemplate | Hamlet | Heist |
CSS: | plain | Cassius | plain |
JS: | happstack-jmacro,-yui | Julius | plain |
Sessions: | happstack-clientsessions | clientsessions | Snaplet Session |
Wenn man sich auf der Snap Homepage ein wenig umschaut, findet man zwei etwas ältere Benchmarks. Der Erste ist ein Pong Benchmark, bei dem gemessen wird, wieviele Antworten pro Sekunde bearbeitet wurden. Je mehr Antworten/Sekunde, desto besser.
Beim Zweiten Benchmark wurde getestet, wie der Datendurchsatz ist. Auch hier sind wieder größere Zahlen besser.
Mir hat es sehr viel Spaß gemacht, mit Snap ein wenig rumzuspielen. Ich werde bei zukünftigen Projekten es in Betracht ziehen, damit eine Website zu bauen. Das Templating System Heist hat mir sehr gut gefallen. Speziell die Splices und wie bind und apply arbeiten. Dazu kommt die Typsicherheit von Haskell, die es sehr angenehm macht, stabile Webanwendungen zu schreiben. Für weitere Vorträge wäre es interessant, eine Gegenüberstellung der drei großen Webframeworks zu erstellen, um die Schwächen und Stärken der einzelnen Komponenten besser herauszukristallisieren. Der Vorteil der drei Frameworks ist gerade die Auswahl der Komponenten, mit einer Gegenüberstellung könnte man sich sehr gut die Komponenten auswählen, die für das eigene Projekt am besten geeignet sind.