使用Lisp的Web服务

时间:2012-04-07 17:01:50

标签: web-services rest lisp

我很好奇使用Lisp来支持现代RESTful Web服务,但鉴于许多变种和实现,很难知道从哪里开始。

我确信有人在那里使用Lisp进行网络相关的应用程序(只是在SO上显示这些问题,但是我想知道的是是否有任何更适合的Lisp实现Web服务比其他人?(例如本机unicode支持,内置的Web相关库,性能等)

我不是在寻找unicode“hacks”或web框架。我最感兴趣的是你开箱即用的东西。虽然我对CLISP上的Common Lisp有一些小经验(作为本科计算机科学课程的一部分的通用多项式计算器),但我没有使用任何Lisp派生或实现。很高兴知道这个问题是否有特别好的选择,特别是那些以这种方式实际使用过Lisp的人。

2 个答案:

答案 0 :(得分:13)

Racket 的标准库包含web server library。我玩过它,但觉得它不适合我喜欢用Lisp工作的互动方式。它确实有一些很好的功能,比如基于延续的控制流程,所以值得一看。

根据个人经验, Common Lisp 是Web开发的绝佳选择。这就是我的博客的实现。Hunchentoot简单而强大且非常Lispy。支持交互式编程以及可以想象,并且有Websockets之类的插件(我还不需要它)。

也就是说, Clojure 中的网络编程同样令人愉快。我使用Clojure和Noir为我的家人实现了一个基于Web的社区中心。 Stylewise,Noir非常类似于Hunchentoot和cl-who的组合。作为奖励,访问Java库非常有用。 (在我的例子中,实现OpenID登录支持,使用Common Lisp会很困难,与Clojure一样轻松。)因此,如果您的应用程序需要与第三方Web服务或数据格式交互,我建议采取好好长久看看Clojure。

REST接口在Hunchentoot / Noir风格的Web框架中也很容易实现。我不能在这方面判断Racket的网络服务器,因为我对它不够熟悉。

答案 1 :(得分:6)

我知道一个可能符合您的需求:Clack

Clack是Common Lisp的Web应用程序环境,受到Python的WSGI和Ruby的Rack的启发。

希望它有所帮助。