web-services rest lisp

web services - Servicio web con Lisp.



web-services rest (2)

Tengo curiosidad por usar Lisp para respaldar un servicio web RESTful moderno, pero dadas las muchas variantes e implementaciones, es difícil saber por dónde empezar.

Estoy seguro de que hay gente que usa Lisp para aplicaciones relacionadas con la web (solo está rastreando las preguntas aquí en SO así lo demuestra), pero me gustaría saber si hay alguna implementación de Lisp que sea más adecuada para los servicios web que otras. (soporte nativo de Unicode, por ejemplo, bibliotecas integradas relacionadas con la web, rendimiento, etc.)

No estoy buscando "hacks" Unicode o frameworks web. Estoy más interesado en lo que obtienes de la caja. No me he alineado con ningún derivado o implementación de Lisp, aunque tengo poca experiencia con Common Lisp en CLISP (una calculadora polinómica genérica como parte de un curso de licenciatura en informática). Sería bueno saber si hay opciones particularmente buenas para este problema, especialmente de aquellas personas que realmente han usado Lisp de esta manera.


La biblioteca estándar de Racket contiene una biblioteca de servidor web . He jugado con él, pero sentí que no era adecuado para mi forma interactiva preferida de trabajar con un Lisp. Tiene algunas características interesantes, como el flujo de control basado en la continuación, por lo que vale la pena verlo.

Hablando por experiencia personal, Common Lisp es una excelente opción para el desarrollo web. Es en lo que se implementa mi blog. Hunchentoot es simple y poderoso y muy Lispy. La programación interactiva es compatible y se puede imaginar, y hay complementos para cosas como Websockets (que aún no he necesitado).

Dicho esto, la programación web en Clojure es igual de agradable. He implementado un centro comunitario basado en la web para mi familia utilizando Clojure y Noir . Stylewise, Noir es muy similar a una combinación de Hunchentoot y cl-who . Como beneficio adicional, el acceso a las bibliotecas de Java puede ser extremadamente útil. (En mi caso, la implementación del soporte de inicio de sesión de OpenID, que habría sido difícil con Common Lisp, fue muy fácil con Clojure). Debido a esto, si su aplicación necesita interactuar con servicios web de terceros o formatos de datos, sugiero tomar una Buena y larga mirada a Clojure.

Las interfaces REST también son fáciles de hacer en marcos web de estilo Hunchentoot / Noir. No puedo juzgar el servidor web de Racket en este sentido, ya que no estoy lo suficientemente familiarizado con él.


Sé que uno tal vez se adapte a tu necesidad: Clack

Clack es un entorno de aplicación web para Common Lisp inspirado en WSGI de Python y Ruby''s Rack.

Espero eso ayude.