Lisp Web Frameworks?
scheme guile (16)
¿Qué es Weblocks?
Weblocks es un marco web basado en continuaciones escrito en Common Lisp.
¿Cuáles son los marcos web populares (ok, popular es relativo) para los diversos sabores de LISP?
Lisp-on-lines es un framework de aplicaciones web construido sobre CLSQL y UCW y proporciona un modelo de desarrollo de aplicaciones similar en muchos aspectos a Ruby on Rails. En este momento se puede encontrar en http://versions.tech.coop/lisp-on-lines/ .
Otra cosa interesante (aunque lejos de ser "popular") a tener en cuenta es SymbolicWeb - http://groups.google.com/group/symbolicweb
UnCommonWeb (UCW) a menudo se menciona http://www.common-lisp.net/project/ucw/ - no es REST como está en boga en este momento, más como SeaSide de Smalltalk (pero, una vez más, SeaSide es bastante en-vogue).
Hunchentoot también está bastante extendido
La mayoría (quizás todos) de los bien conocidos marcos web de Common Lisp ya han sido mencionados, así que solo agregaré algunos comentarios.
Hunchentoot no es un "marco web" en el sentido que la mayoría de la gente quiere decir. Es un servidor HTTP (uno extremadamente bueno).
El "Lisp on Lines" de Drew Crampsie parece extremadamente prometedor, pero no estoy seguro de lo avanzado que está. He estado esperando escuchar un anuncio.
La Web UnCommon de Marco Baringer se ejecuta en muchas de las implementaciones de CL más importantes: Allegro CL, CMUCL, Clozure CL (anteriormente conocido como OpenMCL), GNU clisp y SBCL. El único importante que falta es LispWorks; No sé si eso significa que no se ha probado que funcione, o si se sabe que no funciona, o qué; pero si se ejecuta en todos esos otros dialectos, probablemente sea fácil hacerlo funcionar en cualquier otro.
Common Lisp
Muchos de los sospechosos habituales (Hunchentoot, UCW, LoL) ya han sido mencionados. Franz pone a disposición Allegro Common Lisp (y portado a otros Lisps):
- en un nivel inferior (manejando las solicitudes HTTP usted mismo), AllegroServe .
- en un nivel superior (más de un "marco"), WebActions .
Ambos son de código abierto. Tiendo a utilizar AllegroServe, teniendo en cuenta las utilidades cuando las necesito, pero a algunas personas realmente les gustan las WebActions.
Utilicé Araneida durante bastante tiempo, y prefiero su estilo a AllegroServe, pero no se ha mantenido desde 2006.
He buscado bastante extensamente un buen marco web para Lisp, y encontré que todos eran algo inaccesibles. La arquitectura de UCW no me pareció muy natural (no puedo recordar por qué, ha pasado un tiempo desde que investigué), y KPAX ya no se mantiene (creo).
La web simbólica se ve muy interesante, y creo que Weblocks es la más interesante, pero Weblocks no está muy bien documentada y puede ser bastante intimidante para el recién llegado. SymbolicWeb era inmaduro la última vez que lo busqué, pero puede haber crecido un poco desde entonces. La página de características se ve muy bien hoy.
Hay diferentes enfoques que puede tomar. Si quieres un enfoque de pura cefalea, entonces podrías:
- Si puede leer el código con soltura y comprender las continuidades, puede probar Weblocks con un back-end Hunchentoot (Weblocks tiene una dependencia en Hunchentoot que aún no se ha abstraído). Se supone que debe haber un manual de usuario real en un mes o dos, pero como con cualquier proyecto de OSS, tales compromisos son incompletos.
- Del mismo modo, puedes probar SymbolicWeb. [ actualización : no importa, el proyecto no es más]
- enrolla el tuyo. En serio, hay cl-who para ayudar con la generación de HTML, hay librerías javascript y json disponibles, useckets, elephant, cl-sql, hunchentoot, aserve y muchas bibliotecas de utilidades que puedes combinar.
Si estás de acuerdo con un enfoque híbrido, esto es algo con lo que estoy experimentando en este momento: escribí un backend Lisp JSON-RPC para Qooxdoo, así que puedo servir las interfaces puras de JavaScript a través de un servidor HTTP superrápido como Cherokee y deje que Cherokee extienda las conexiones a tantos servidores back-end json-rpc ejecutándose en Lisp como yo quiera. Muy, muy escalable. Estoy lejos de entender los problemas y desafíos, pero fue bastante sencillo trabajar. la biblioteca json hace que sea estúpido simple hacer que el backend funcione, creo que Qooxdoo en realidad es más difícil (pero realmente no soy un desarrollador de JS).
También voy a consultar WebActions de allegro, porque hay cierto atractivo en la disponibilidad de soporte pago, sin mencionar que Allegro puede ser la mejor implementación de CL disponible (su Kennyness lo usa :-)).
Re: SymbolicWeb (y su muerte exagerada)
Página del proyecto SymbolicWeb en el artículo de Gitorious y SymbolicWeb en Wikipedia . La página de Grupos de Google está definitivamente muerta (¿y desarchivada?), Pero el árbol de Gitorious muestra registros el 29 de abril de 2010 . La página del proyecto también se refiere a que " algunos ejemplos en ejecución " están "ocasionalmente disponibles" en nostdal.org (que es inalcanzable mientras escribo esto, reforzando el calificador "ocasionalmente" :-).)
( Nota: no soy un usuario de SymbolicWeb. Recién rastreé los enlaces de SymbolicWeb mientras leía este hilo).
Esta pregunta es un poco antigua, pero pensé que compartiría mi descubrimiento reciente: el lenguaje Hop, que está basado en Scheme y es bastante completo.
HOP es un lenguaje de programación de varios niveles para la Web 2.0 y la llamada web difusa. Está diseñado para programar aplicaciones web interactivas en muchos campos, como multimedia (galerías web, reproductores de música, ...), ubicua y domótica (SmartPhones, dispositivos personales), mashups, oficina (agendas web, clientes de correo, ... ), etc.
Características HOP:
- un extenso conjunto de widgets para programar Web GUI extravagantes y portátiles,
- compatibilidad total con las tecnologías web tradicionales (JavaScript, HTML, CSS),
- Soporte HTML5, un servidor web versátil compatible con HTTP / 1.0 y HTTP / 1.1,
- un soporte multimedia nativo para habilitar aplicaciones web multimedia omnipresentes,
- soporte rápido de nivel 1 de WebDAV,
- un compilador de código nativo optimizado para el código del servidor,
- un compilador de JavaScript sobre la marcha para el código del cliente,
- un amplio conjunto de bibliotecas para correo, calendarios, bases de datos, telefonía, ...
Acabo de descubrir un marco web llamado Clack para el ceceo común y me pareció bastante fácil comenzar.
Cita de su sitio web "Clack es un entorno de aplicaciones web para Common Lisp inspirado en WSGI y Ruby''s Rack de Python".
y caveman es un framework micro web basado en Clack.
PLT Scheme cuenta con un servidor web incorporado basado en la continuación .
Actualización: PLT Scheme ahora se llama Racket.
Restas es otro framework web que ha visto actualizaciones recientes:
Su descripción
RESTAS is a Common Lisp web application framework. Its key features are:
RESTAS was developed to simplify development of web applications following the REST architectural style.
RESTAS is based on the Hunchentoot HTTP server. Web application development with RESTAS is in many ways simpler than with Hunchentoot, but some knowledge of Hunchentoot is required, at least about working with hunchentoot:*request* and hunchentoot:*reply*.
Request dispatch is based on a route system. The route system is the key concept of RESTAS and provides unique features not found in other web frameworks.
The other key RESTAS concept is its module system, which provides a simple and flexible mechanism for modularized code reuse.
Interactive development support. Any RESTAS code (such as the definition of a route, a module or a submodule) can be recompiled at any time when you work in SLIME and any changes you made can be immediately seen in the browser. No web server restart or other complicated actions are needed.
SLIME integration. The inner structure of a web application can be investigated with the standard "SLIME Inspector." For example, there is a "site map" and a simple code navigation with this map.
Easy to use, pure Lisp web application daemonization facility based on RESTAS and SBCL in Linux without the use of Screen or detachtty.
RESTAS is not an MVC framework, although it is not incompatible with the concept. From the MVC point of view, RESTAS provides the controller level. Nevertheless, RESTAS provides an effective and flexible way for separation of logic and representation, because it does not put any constraints on the structure of applications. Separation of model and controller can be effectively performed with Common Lisp facilities, and, hence, doesn''t need any special support from the framework.
RESTAS does not come with a templating library. cl-closure-template and HTML-TEMPLATE are two good templating libraries that can be used with RESTAS.