Was ist das Ökosystem für die Haskell-Webentwicklung? [geschlossen]

80

Inspiriert von dieser Frage und einer aktuellen Angelegenheit frage ich mich, was mit der Haskell-Webentwicklung zu tun hat.

  • Gibt es Haskell-Webframeworks oder Template-Engines?
  • Wie würde das Hosten einer Haskell-Site funktionieren? Gibt es geeignete Webserver?
  • Ist Haskell zu komplex für den üblichen Workflow für schnelle Entwicklung und Prototyping, der häufig in der Webentwicklung verwendet wird?
  • Gibt es Beispiele für vorhandene Haskell-Webanwendungen?
täuschen
quelle
11
Ich denke nicht, dass dies ein Duplikat ist. Die andere Frage betrifft das Erlernen von Haskell als Muttersprache für die Webentwicklung. In dieser Frage wird speziell gefragt, welche Frameworks, Template-Engines und Webserver vorhanden sind. Vielleicht kann diese Frage überarbeitet werden?
Tom Lokhorst
2
Genau deshalb habe ich es von der anderen Frage abgezweigt, die hauptsächlich Antworten mit Empfehlungen zum Erlernen anderer Sprachen erhielt. Diese Frage hat einen anderen Schwerpunkt, insbesondere webbezogene Projekte im Ökosystem für Haskell. : - /
täuschen
7
Ich möchte dies offen
CiscoIPPhone
@deceze Ich habe deine Frage ein bisschen überarbeitet. Insbesondere habe ich den Titel von der anderen Frage deutlicher gemacht.
Tom Lokhorst
@ Tom Danke! Hoffe das unterscheidet es ein bisschen besser.
Täuschung

Antworten:

18

Zunächst ein Haftungsausschluss: Ich habe noch nie eine Haskell-Webentwicklung durchgeführt, daher spreche ich nicht aus Erfahrung.

Wenn man sich die aussehen Web Kategorie auf Hackage gibt es viele Web-bezogene Pakete.

Ich denke, die meisten Haskell-Webanwendungen werden auf einem benutzerdefinierten Server ausgeführt (möglicherweise unter Verwendung mod_proxydes erweiterten Anforderungsroutings von Apache oder IIS als Front-End). Es gibt jedoch auch einige FastCGI-Bindungen.

Die bekannteste Infrastruktur für Haskell-Webserver / Framework / Datenspeicher ist Happstack , was aus mehreren Gründen interessant ist. Das offensichtlichste ist, dass es seinen gesamten Status im Speicher speichert und keine relationale Datenbank verwendet.

Eine andere neuere Webserver-Oberfläche ist Hack , von der ich nicht viel weiß, außer dass das 1-minütige Tutorial interessant aussieht.

Es gibt viel mehr Webserver / Frameworks in Haskell, aber diese beiden sind nur die, die ich von oben kenne.

Tom Lokhorst
quelle
36

Ich habe echte Produktionswebanwendungen in Haskell durchgeführt. Hier ist der Stapel, den ich verwendet habe:

Die gesamte Webanwendung ist ein einzelnes Haskell-Programm, das zu nativem Code ghc kompiliert wurde. Ich habe den Code geschrieben, um das Anforderungsrouting (und das umgekehrte Routing) von Hand durchzuführen.

Phil
quelle
14

Ich habe Happstack verwendet, um eine einfache Webanwendung / einen Webservice für unser lokales Intranet zu erstellen.

  • Es speichert Daten im Speicher mit einem Transaktionsprotokoll zur Wiederherstellung (Standard bei Happstack). Sie werden SQL nirgendwo im Code finden.
  • Keine Vorlagen. Was man normalerweise mit Vorlagen macht, mache ich in Javascript. Holen Sie sich einfach die Daten im JSON-Format und fügen Sie sie in das DOM ein.

Es gibt nur 169 Zeilen Haskell-Code Main.hs, die den Server definieren. Der Rest ist Javascript für die Präsentation und etwas Python zum Testen.

Es ist Open Source, Sie können es auf GitHub ausprobieren und es möglicherweise als Ausgangspunkt verwenden.

luntain
quelle
1
Zeile 82, Sie vergessen ein Schlusszitat.
Rayne
10
Haskell erlaubt Anführungszeichen in Bezeichnern. Traurig, dass die Syntaxhervorhebung dieses Githubs darüber hinausgeht.
Luntain
9
  • Gibt es Haskell-Webframeworks oder Template-Engines?

Es gibt viele Web-Frameworks. Schauen Sie in der Webkategorie nach: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

Für Vorlagen scheint HStringTemplate der Markenführer zu sein: http://hackage.haskell.org/package/HStringTemplate

  • Wie würde das Hosten einer Haskell-Site funktionieren? Gibt es geeignete Webserver?

Statisch verknüpfte Binärdateien, auf denen ein eigener Webserver ausgeführt wird (z. B. Happstack-Server oder einer der anderen Haskell-Webserver), Haskell-Binärdateien, die mit Apache sprechen, ... so ziemlich jede erdenkliche Kombination.

  • Ist Haskell zu komplex für den üblichen Workflow für schnelle Entwicklung und Prototyping, der häufig in der Webentwicklung verwendet wird?

Nein. Und Sie erhalten stärkere Garantien, dass die App dank des Typsystems nicht fehlerhaft ist.

  • Gibt es Beispiele für vorhandene Haskell-Webanwendungen?

hpaste ist eine einfache Demo für Happy Stack. Das gesamte Geschäft von Tupil.com besteht aus Haskell-Web-Apps. Die Deutsche Bank hielt letztes Jahr auf der CUFP einen Vortrag über ihre internen Haskell-Webframeworks (basierend auf Happstack).

Don Stewart
quelle
Nun, Tupil entwickelt auch viel iPhone-Apps (in Ziel C). Sie machen nicht nur Haskell-Web-Apps.
Tom Lokhorst
7

Erstens, verdammt, wenn dieser "Affären" -Link nicht eines der lustigsten Dinge überhaupt war!

Nun, während ich eine Antwort auf den anderen Link gepostet habe, glaube ich nicht, dass im Haskell-Webland viel passiert. Sie haben Happstack und vielleicht ein paar andere Frameworks, die scheinbar nirgendwo hingehen. Dann haben Sie FastCgi.

Wenn Sie mich mögen, dann ist FastCgi wahrscheinlich gut genug für die meisten Ihrer Bedürfnisse. Ich finde, die meisten Kunden haben keine wirklichen Skalierungsprobleme (und außerdem ist es gut genug für die Ruby-Leute, richtig).

Wenn FastCgi nicht Ihre Geschwindigkeit ist ... nun, vielleicht sind Gieren oder Heben (Erlang bzw. Scala) einen Blick wert.

Shaun
quelle
Mr. Bone hat sich sehr bemüht.
Daniel