Inspiré par cette question et une récente affaire , je me demande ce qui est impliqué dans le développement web Haskell.
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.
J'ai fait de vraies applications web de production à Haskell. Voici la pile que j'ai utilisée:
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.
J'ai utilisé Happstack pour créer une webapp/webservice simple pour notre intranet local.
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.
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
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.
Non. Et vous obtiendrez de plus fortes garanties que l'application n'est pas défectueuse grâce au système de type.
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).
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.