18

我对使用 Lisp 来支持现代 RESTful Web 服务感到好奇,但考虑到许多变体和实现,很难知道从哪里开始。

我确信有人将 Lisp 用于与 Web 相关的应用程序(只是在 SO 显示的问题中搜索),但我想知道是否有任何 Lisp 实现比其他更适合 Web 服务?(原生 unicode 支持,例如,内置的网络相关库、性能等)

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

4

2 回答 2

13

Racket的标准库包含一个网络服务器库。我玩过它,但觉得它不适合我喜欢的 Lisp 交互方式。它确实有一些不错的特性,比如基于持续的控制流,所以值得一看。

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

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

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

于 2012-04-07T18:02:52.100 回答
6

我知道一个可能适合您的需要:Clack

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

希望能帮助到你。

于 2012-04-08T07:27:05.123 回答