我很好奇使用Lisp来支持现代的RESTful Web服务,但是考虑到许多变体和实现,很难知道从哪里开始.
我确信有人在使用Lisp进行网络相关的应用程序(只是拖曳SO的这个问题在这里显示),但是我想知道的是,有什么Lisp实现比其他更适合于Web服务? (例如,本地unicode支持,内置Web相关库,性能等)
我不是在寻找unicode“黑客”或网络框架.我最感兴趣的是你可以开箱即用尽管我对CLISP(通用多项式计算器作为本科计算机科学课程的一部分)的Common Lisp有一些小小的经验,但我并没有对任何Lisp派生或实现进行调整.知道这个问题是否有特别好的选择,特别是那些以这种方式实际使用Lisp的人,这是很好的.
解决方法
Racket的标准库包含一个
web server library.我已经玩过了,但是觉得它不适合我喜欢使用Lisp的交互式方式.它确实有一些不错的功能,如基于连续的控制流程,所以值得一看.
从个人经验来看,Common Lisp是网页开发的绝佳选择.这是我的博客实现的.Hunchentoot是简单而强大,非常Lispy.支持交互式编程,也可以想象,并且有一些插件,例如Websockets(我还没有需要)的插件.
也就是说,Clojure的网络编程也是一样愉快.我已经使用Clojure和Noir为我的家庭实现了一个基于Web的社区中心.Stylewise,Noir与Hunchentoot和cl-who的组合非常相似.作为一个奖励,访问Java库非常有用. (在我的情况下,实现OpenID登录支持,这对于Common Lisp来说将是困难的)对于Clojure来说是一件轻而易举的事情.)因此,如果您的应用程序需要与第三方Web服务或数据格式进行交互,我建议您好久不见,Clojure.
也可以在Hunchentoot / Noir风格的Web框架中轻松实现REST界面.在这方面,我无法判断Racket的网络服务器,因为我不够熟悉.