7

除了为我的网站提供 API 之外,我还想为用户提供编写可以在我的服务器上运行的简单脚本的能力。脚本将有权访问用户拥有的对象,并能够操纵、修改和以其他方式处理其数据。

我希望能够在精细级别限制这些脚本占用的资源(例如,最大执行时间应该是 100 毫秒)。我还想确保一个安全的沙箱,这样每个用户只能访问一组有限的数据和资源,并且不能访问磁盘、其他人的数据等。

通常,脚本会非常简单(例如,创建符合特定条件的值的总和或平均值),并且它们通常会在模板中使用(例如,用平均值填充此单元格或 html 元素的值或和)。

理想情况下,我想使用一种众所周知的常用编程语言的沙盒子集,以便用户轻松上手。后端是用 Python 编写的,因此基于 Python 的语言可能会有好处,但我对其他语言和技术持开放态度。由于其简单的性质和常见的可用性,Javascript 也很有吸引力。

这些语言应该支持创建 DSL 和库。

目标受众是基于 Web 的应用程序的一般用户群,不一定是非常技术性的。换句话说,它不是针对具有任何特定编程语言的特定知识的基础。我的期望是一部分用户将创建将被大多数人使用的脚本。

对于语言和技术有什么想法或建议吗?其他人尝试这个的任何例子以及他们遇到的成功和失败?

4

1 回答 1

2

我为此使用 Lua,但它是针对支持 Lua 的社区。所以我的答案是你的用户是谁?

如果您的用户是内部用户,例如我的情况,并且精通 Python,请使用 Python。但是,如果这是针对万维网的东西,我可能会选择 javascript,因为它是通用语(每个开发人员都知道它,而且很容易上手)。至于引擎……好吧,V8 会很好,但它不是 100% 线程安全的,因为您不能像 SpiderMonkey 那样以无锁方式在同一进程中运行多个引擎。所以你可能想要使用它。此外,由于默认情况下 javascript 是沙盒化的,因此您不必担心在您这边实现太多。

于 2008-12-17T01:48:12.713 回答