2009-08-10 17 views
78

Inspirado por la pregunta this y un reciente affair, me pregunto qué implica el desarrollo web de Haskell.¿Cuál es el ecosistema para el desarrollo web de Haskell?

  • ¿Hay marcos de web Haskell o motores de plantilla?
  • ¿Cómo funcionaría el hosting de un sitio Haskell? ¿Hay servidores web adecuados?
  • ¿Es Haskell demasiado complejo para el rápido flujo de trabajo habitual de desarrollo y creación de prototipos a menudo utilizado en el desarrollo web?
  • ¿Hay ejemplos de aplicaciones web Haskell existentes?
+11

No creo que sea un duplicado. La otra pregunta es preguntando sobre el aprendizaje de Haskell como primer idioma, para hacer un desarrollo web. Esta pregunta específicamente pregunta qué marcos, motores de plantillas y servidores web existen. Tal vez esta pregunta puede ser revisada? –

+2

Es exactamente por eso que lo ramifiqué de la otra pregunta, que consistía principalmente en obtener respuestas con recomendaciones para aprender otros idiomas. Esta pregunta tiene un enfoque diferente, específicamente proyectos centrados en la web en el ecosistema de Haskell. : -/ – deceze

+4

De acuerdo. Votando para reabrir – skaffman

Respuesta

18

En primer lugar, un descargo de responsabilidad: nunca he hecho ningún desarrollo web Haskell, por lo que no hablo por experiencia.

Si mira el Web category en Hackage, hay muchos paquetes relacionados con la web.

Creo que la mayoría de las aplicaciones web Haskell se ejecutan en un servidor personalizado (posiblemente utilizando el mod_proxy de Apache o el enrutamiento avanzado de solicitudes de IIS como interfaz). Sin embargo, también hay algunos enlaces FastCGI.

La infraestructura de Haskell webserver/framework/datastorage más destacada es Happstack, lo cual es interesante por varias razones, la más obvia es que almacena todo su estado en memoria y no utiliza una base de datos relacional.

Otra interfaz de servidor web más reciente es hack, de la que no sé mucho excepto que el tutorial de 1 minuto parece interesante.

Hay muchos más servidores web/frameworks en Haskell, pero estos dos son solo los que conozco de la parte superior de mi cabeza.

6

Primero, ¡maldición si ese enlace de "aventura" no fuera una de las cosas más divertidas!

Ahora, aunque publiqué una respuesta en el otro enlace, no creo que esté sucediendo demasiado en el sitio web de Haskell. Tienes Happstack y tal vez algunos otros marcos que no parecen ir a ninguna parte. Entonces tienes FastCgi.

Si me gusta, entonces FastCgi probablemente sea lo suficientemente bueno para la mayoría de sus necesidades. La mayoría de los clientes, encuentro, realmente no tienen problemas de escala (y, además, es lo suficientemente bueno para la gente de Ruby, a la derecha).

Si FastCgi no es su velocidad ... bueno, quizás el piar o la sustentación (Erlang y Scala, respectivamente) valen la pena.

8
  • ¿Hay marcos de web Haskell o motores de plantilla?

Hay muchos marcos web. Mira en la categoría Web: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

para crear plantillas, HStringTemplate parece ser la marca líder: http://hackage.haskell.org/package/HStringTemplate

  • ¿Cómo alojar un sitio de trabajo Haskell, hay servidores web adecuados?

binarios enlazados estáticamente ejecutan su propio servidor web (por ejemplo happstack-servidor o uno de los otros servidores web Haskell), los binarios Haskell hablar con Apache, ... más o menos todas las combinaciones que usted podría pensar.

  • ¿Es Haskell demasiado complejo para el rápido flujo de trabajo habitual de desarrollo y creación de prototipos a menudo utilizado en el desarrollo web?

No. Y obtendrá garantías más sólidas de que la aplicación no es defectuosa gracias al sistema de tipos.

  • ¿Hay ejemplos de aplicaciones web Haskell existentes?

hpaste es una demostración simple para happstack. Todo el negocio de Tupil.com son las aplicaciones web de Haskell. Deutsche Bank dio una charla en CUFP el año pasado en sus marcos web internos de Haskell (basados ​​en happstack).

+0

Bueno, Tupil también hace un montón de desarrollo de aplicaciones de iPhone (en el Objetivo C). No solo hacen aplicaciones web Haskell. –

+0

Sí, muy buen punto, Tom. –

35

He hecho aplicaciones web de producción real en Haskell. Aquí está la pila utilicé:

  • PostgreSQL base de datos back-end
  • HDBC Postgres para conectarse a él
  • XHTML para generar HTML. Es una sintaxis divertida, pero al menos tienes lambda-abstracción.
  • Fastcgi para conectar el backend al lighttpd, haciendo la porción web.

Toda la aplicación web es un programa haskell único, compilado en código nativo ghc. Escribí el código para hacer el enrutamiento de solicitudes (y el enrutamiento inverso) a mano.

13

He usado Happstack para crear un webapp/servicio web simple para nuestra intranet local.

  • Almacena datos en la memoria con un registro de transacciones para recuperación (estándar con Happstack). No encontrará SQL en el código en ninguna parte.
  • Sin plantillas. Lo que uno normalmente haría con las plantillas, lo hago en Javascript. Simplemente obtenga los datos en formato JSON y colóquelos en el DOM.

Hay solo 169 líneas de código Haskell, todas en Main.hs, que definen el servidor. El resto es Javascript para la presentación y algo de Python para probar.

Es de código abierto, puede verificarlo en GitHub, y tal vez usarlo como punto de partida.

+1

Línea 82, olvida una cotización de cierre. – Rayne

+10

Haskell permite citas en identificadores. Triste, el resaltado de sintaxis de github cae sobre eso. – luntain

Cuestiones relacionadas