haskell - terrestre - tipos de ecosistema
¿Cuál es el ecosistema para el desarrollo web de Haskell? (5)
Inspirado por this pregunta y una affair reciente, me pregunto qué implica el desarrollo web de Haskell.
- ¿Hay frameworks web Haskell o motores de plantillas?
- ¿Cómo funcionaría el hosting de un sitio Haskell? ¿Hay servidores web adecuados?
- ¿Haskell es demasiado complejo para el flujo de trabajo habitual basado en desarrollo rápido y creación de prototipos a menudo utilizado en el desarrollo web?
- ¿Hay ejemplos de aplicaciones web Haskell existentes?
En primer lugar, un descargo de responsabilidad: nunca he hecho ningún desarrollo web Haskell, así que no hablo por experiencia.
Si miras la categoría Web en Hackage, hay muchos paquetes relacionados con la web.
Creo que la mayoría de las aplicaciones web de Haskell se ejecutan en un servidor personalizado (posiblemente utilizando mod_proxy
de Apache o 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 , que 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 el hack , del 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.
He hecho aplicaciones web de producción real en Haskell. Aquí está la pila que utilicé:
- PostgreSQL base de datos PostgreSQL
- 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 , sirviendo en la web.
La aplicación web completa es un programa haskell único, compilado a código nativo ghc. Escribí el código para hacer el enrutamiento de solicitudes (y el enrutamiento inverso) a mano.
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.
Solo hay 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, puedes consultarlo en GitHub , y tal vez usarlo como punto de partida.
Primero, maldición si ese enlace de "aventura" no fue una de las cosas más divertidas de la historia.
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 le gusto, 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 tu velocidad ... bueno, quizás el piar o el ascensor (Erlang y Scala, respectivamente) valen la pena.
- ¿Hay frameworks web Haskell o motores de plantillas?
Hay muchos marcos web. Busque en la categoría Web: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web
Para la creación de plantillas, HStringTemplate parece ser el líder de la marca: http://hackage.haskell.org/package/HStringTemplate
- ¿Cómo funcionaría el hosting de un sitio Haskell? ¿Hay servidores web adecuados?
Binarios estáticamente enlazados ejecutando su propio servidor web (ej. Happstack-server o uno de los otros servidores web Haskell), binarios Haskell hablando con Apache, ... casi todas las combinaciones que se te ocurran.
- ¿Haskell es demasiado complejo para el flujo de trabajo habitual basado en desarrollo rápido y creación de prototipos a menudo utilizado en el desarrollo web?
No. Y obtendrás garantías más sólidas de que la aplicación no está 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).