web-dev-qa-db-fra.com

Quel est l'écosystème pour le développement Web Haskell?

Inspiré par cette question et une récente affaire , je me demande ce qui est impliqué dans le développement web Haskell.

  • Existe-t-il des cadres Web Haskell ou des moteurs de modèles?
  • Comment fonctionnerait l'hébergement d'un site Haskell, existe-t-il des serveurs Web appropriés?
  • Haskell est-il trop complexe pour le flux de travail habituel de développement rapide et de prototypage souvent utilisé dans le développement Web?
  • Existe-t-il des exemples d'applications Web Haskell existantes?
80
deceze

Tout d'abord, un avertissement: je n'ai jamais fait de développement Web Haskell, donc je ne parle pas d'expérience.

Si vous regardez catégorie Web sur Hackage, il existe de nombreux packages liés au Web.

Je pense que la plupart des applications Web Haskell s'exécutent sur un serveur personnalisé (peut-être en utilisant mod_proxy D'Apache ou Advanced Request Routing d'IIS en tant que frontal). Cependant, il existe également des liaisons FastCGI.

L'infrastructure de serveur Web/framework/datastorage Haskell la plus importante est Happstack , ce qui est intéressant pour plusieurs raisons, la plus évidente étant qu'elle stocke tous ses états en mémoire et n'utilise pas de base de données relationnelle.

Une autre interface de serveur Web plus récente est hack , que je ne connais pas beaucoup, sauf que le tutoriel d'une minute semble intéressant.

Il y a beaucoup plus de serveurs Web/frameworks dans Haskell, mais ces deux-là ne sont que ceux que je connais du haut de ma tête.

18
Tom Lokhorst

J'ai fait de vraies applications web de production à Haskell. Voici la pile que j'ai utilisée:

  • PostgreSQL backend de base de données
  • HDBC Postgres pour s'y connecter
  • XHTML pour générer du HTML. C'est un peu une syntaxe amusante, mais au moins vous avez lambda-abstraction.
  • Fastcgi pour connecter le backend au lighttpd , faisant le service web.

L'ensemble de l'application Web est un programme haskell unique, compilé en code natif ghc. J'ai écrit le code pour faire le routage de demande (et le routage inverse) à la main.

36
Phil

J'ai utilisé Happstack pour créer une webapp/webservice simple pour notre intranet local.

  • Il stocke les données en mémoire avec un journal des transactions pour la récupération (standard avec Happstack). Vous ne trouverez nulle part SQL dans le code.
  • Pas de modèles. Ce que l'on fait habituellement avec des modèles, je le fais en Javascript. Obtenez simplement les données au format JSON et placez-les dans le DOM.

Il n'y a que 169 lignes de code Haskell, toutes en Main.hs , qui définissent le serveur. Le reste est Javascript pour la présentation, et certains Python pour les tests.

Il est open source, vous pouvez le vérifier sur GitHub , et peut-être l'utiliser comme point de départ.

14
luntain
  • Existe-t-il des frameworks Web Haskell ou des moteurs de modèles?

Il existe de nombreux frameworks Web. Regardez dans la catégorie Web: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

Pour les modèles, HStringTemplate semble être le leader de la marque: http://hackage.haskell.org/package/HStringTemplate

  • Comment fonctionnerait l'hébergement d'un site Haskell, existe-t-il des serveurs Web appropriés?

Binaires liés statiquement exécutant leur propre serveur Web (par exemple, serveur happstack ou l'un des autres serveurs Web Haskell), binaires Haskell parlant à Apache, ... à peu près toutes les combinaisons auxquelles vous pourriez penser.

  • Haskell est-il trop complexe pour le flux de travail habituel de développement rapide et de prototypage souvent utilisé dans le développement Web?

Non. Et vous obtiendrez de plus fortes garanties que l'application n'est pas défectueuse grâce au système de type.

  • Existe-t-il des exemples d'applications Web Haskell existantes?

hpaste est une démo simple pour happstack. Toute l'entreprise Tupil.com est constituée des applications Web Haskell. La Deutsche Bank a donné une conférence au CUFP l'année dernière sur leurs frameworks web Haskell internes (basés sur happstack).

9
Don Stewart

Tout d'abord, bon sang si ce lien "affaire" n'était pas l'une des choses les plus drôles jamais!

Maintenant, alors que j'ai posté une réponse sur l'autre lien, je ne pense pas qu'il se passe beaucoup de choses sur le Web de Haskell. Vous avez Happstack et peut-être quelques autres cadres qui ne semblent aller nulle part. Ensuite, vous avez FastCgi.

Si vous m'aimez, FastCgi est probablement assez bon pour la plupart de vos besoins. La plupart des clients, je trouve, n'ont pas vraiment de problèmes d'échelle (et, en plus, c'est assez bon pour les gens Ruby, à droite).

Si FastCgi n'est pas votre vitesse ... eh bien, peut-être que le pian ou l'ascenseur (Erlang et Scala, respectivement) valent le coup d'œil.

7
Shaun