Lisp Web框架?

什么是stream行的(好吧,stream行是相对的)网页框架的各种口味的LISP?

PLT Scheme具有一个内置的,基于延续的Web服务器 。

更新:PLT计划现在被称为球拍。

Hunchentoot也相当普遍

什么是networking锁?

Weblocks是用Common Lisp编写的基于continuations的Web框架。

http://common-lisp.net/project/cl-weblocks/

大多数(也许是所有)着名的Common Lisp Web框架已经被提及,所以我只是添加一些评论。

Hunchentoot不是大多数人所说的“networking框架”。 这是一个HTTP服务器(非常好)。

Drew Crampsie的“Lisp on Line”看起来非常有前途,但我不确定它有多远。 我一直在等待听到一个消息。

Marco Baringer的UnCommon Web运行在许多着名的CL实现上:Allegro CL,CMUCL,Clozure CL(以前称为OpenMCL),GNU clisp和SBCL。 唯一缺less的是LispWorks; 我不知道这是否意味着它没有经过testing工作,或已知不工作,或者是什么; 但是如果它运行在所有其他方言上,可能很容易使其在任何其他方面运行。

对于Clojure,你可以试试Compojure 。

Common Lisp

很多通常的嫌疑人(Hunchentoot,UCW,LoL)已经被提及。 Franz提供Allegro Common Lisp(并移植到其他Lisp):

  • 在较低的级别(自己处理HTTP请求), AllegroServe 。
  • 在更高层次(更多的是“框架”), WebActions 。

两者都是开源的。 我倾向于使用AllegroServe,因为我需要它们,但是有些人真的喜欢WebActions。

我用了Araneida一段时间,我更喜欢它的风格,但自2006年以来一直没有维护。

我已经非常广泛地search了一个好的Lisp Web框架,而且我发现它们都是有些不可访问的。 UCW的体系结构对我来说似乎不是很自然(我不记得为什么;从我研究过这个过程已经有一段时间了),KPAX不再被维护(我认为)。

符号网站看起来非常有趣,我认为networking锁是最有趣的,但networking锁并没有很好的logging,可以是相当吓倒新人。 SymbolicWeb上次看起来还不成熟,但从那以后它可能会长大一些。 function页面今天看起来相当不错。

你可以采取不同的方法。 如果你想要一个纯粹的倾听方式,那么你可以:

  • 如果你能够熟练地阅读代码并理解延续,你可以尝试使用一个Hunchentoot后端的Weblock(Weblocks依赖尚未被抽象的Hunchentoot)。 在一两个月内应该有一个真正的用户手册,但是与任何OSS项目一样,这样的承诺是粗略的。
  • 同样,你可以尝试SymbolicWeb。 [ 更新 :没关系,该项目不再]
  • 推出自己的。 认真的 – 有谁帮助HTML生成,有JavaScript和json库可用,usocket,大象,cl-sql,hunchentoot,aserve和许多实用程序库,你可以烤在一起。

如果你可以用混合方法,那么我现在正在试验:我已经为Qooxdoo编写了一个Lisp JSON-RPC后端,所以我可以通过像切诺基这样的超高速http服务器来提供纯粹的JavaScript前端。让切诺基在我想要的地方连接到运行在Lisp中的许多后端json-rpc服务器。 非常,非常可扩展。 我远远没有找出结果和挑战,但是工作起来相当简单。 json库使后端工作变得简单愚蠢 – Qooxdoo本身实际上更难,我认为(但我不是JS开发者)。

我也将从allegro中检查WebActions,因为对付费支持的可用性有一定的吸引力 – 更不用说Allegro可能是最好的CL实现(他的Kennyness使用它:-))。

UncommonWeb(UCW)经常被提及http://www.common-lisp.net/project/ucw/ – 它现在不是REST,更像是Smalltalk的SeaSide(但是再一次,SeaSide是相当的EN-时尚)。

LeftParen

Lisp-on-lines是一个构build在CLSQL和UCW之上的Web应用程序框架,提供了一个类似于Ruby on Rails的应用程序开发模型。 现在可以在http://versions.tech.coop/lisp-on-lines/find它。;

http://www.cliki.net/lisp-on-lines

http://kevin.casa.cavewallarts.com/LISP/LOL/lol.html

对于Clojure,你可以尝试Webjure 。

我刚刚发现了一个叫做Clack的networking框架,用于通用的lisp,发现它很容易上手。

请参阅http://clacklisp.org/

从它的网站引用“Clack是Common Lisp的Web应用程序环境,受Python的WSGI和Ruby's Rack的启发。

而穴居人是基于Clack的微型networking框架。

另一个很酷的(但还没有“stream行”)的东西是SymbolicWeb – http://groups.google.com/group/symbolicweb

回复: SymbolicWeb(及其夸张的消亡)

SymbolicWeb项目页面在Gitorious和SymbolicWeb文章在维基百科 。 Google网上论坛页面绝对已经死了(而且还没有被存档?),但是Goduious树最近在2010年4月29日显示了checkins。 该项目页面还提到nostdal.org上“偶尔可用”的一些运行示例 (这是我写这篇文章时无法访问的,强化了“偶尔”限定符:-)。

注意:我不是一个SymbolicWeb用户,我只是在阅读这个线程时跟踪了SymbolicWeb链接。)

Restas是最近更新的另一个Web框架:

http://restas.lisper.ru/en/

它的概述

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. 

这个问题有点老了,但我想我会分享我最近的发现:基于Scheme的Hop语言是相当完整的。

HOP是Web 2.0和所谓的漫游Web的多层编程语言。 它被devise用于在多媒体(networking画廊,音乐播放器等),无处不在和房屋自动化(智能手机,个人电器),混搭,办公室(networking议程,邮件客户端等) )等等

HOPfunction:

  • 一套用于编程花哨和便携式Web GUI的广泛的小部件,
  • 与传统的Web技术(JavaScript,HTML,CSS)完全兼容
  • HTML5支持,支持HTTP / 1.0和HTTP / 1.1的多functionWeb服务器,
  • 支持无处不在的Web多媒体应用程序的原生多媒体支持,
  • 快速的WebDAV 1级支持,
  • 用于服务器代码的优化本地代码编译器,
  • 用于客户端代码的即时JavaScript编译器,
  • 广泛的邮件,日历,数据库,电话,图书馆…