0

我尝试寻找类似的问题,但找不到。

我有一个面向业务的 ASPNET1.1 Web 应用程序。并且有许多规则在应用程序中被硬编码。

我想开始使用 Boo 作为一种脚本语言,开发人员可以使用它在那里编写一些逻辑(不是最终用户)。

每当 BL 发生更改时,我只需更新“脚本文件”,部署到服务器就可以了。无需编译。这个很重要。

所以我有两个问题:

  1. 似乎只有 CS-Script 和 Boo 支持 NET1.1,我不喜欢 CSScript,因为它需要每个脚本都有一个 exe 或一个已编译的 dll。Boo是正确的选择吗?我想使用 JINT (NET2.0+) 或 LUA(找不到导入 C# 的方法)。
  2. 执行 Boo 的速度有多快?我不想编译它(我知道这很快,因为它将是一种静态语言)。我只想使用 Boo 解释器 Eval 函数。

顺便说一句,我要执行的业务逻辑很简单。它应该只是这样的:

function(a, b)
{
return a["Type"] == b["Type"];
}

其中 a 和 b 只是 Hashtables 或 DataRow。所以我实际上并不需要系统导入和所有这些。

提前致谢

4

1 回答 1

0

我放弃了 Boo,因为即使我只想使用 Eval 方法,Boo 也会自动编译表达式并将生成的 Assembly 加载到 AppDomain 中。

由于我在 ASPNET1.1 和一个大型 Web 应用程序(数以千计的用户)中运行,因此效率不高也不快。

即使我创建了一个内部 AppDomain 并在其中运行脚本以便恢复内存。

如果我在同一个 AppDomain 中运行,内存将被吃掉和吃掉,因为这些新程序集将被加载并且永远不会被卸载。

所以我猜从里卡多在一些论坛上的回复来看,Boo 语言从来没有被设计为 CLR 语言的意图,但它击败了围绕 Boo 的整个“脚本”光环。

这对 Boo 来说是一个很大的嘘声 :(

我刚刚测试了 LuaInterface 1.3.0(最后一个支持 NET1.1),它的占用空间为零。没有创建任何程序集,并且总体上更好(更像javascript,没有足迹等)。

我只希望 1.3.0 版本足够稳定。在不久的将来,我无法将我的应用程序升级到 NET2.0。

重要更新:LuaInterface 和 luanet 有很多内存泄漏!!!!相反,我通过使用 DllImport 并使用以下文件作为基础直接链接到 lua52.dll: https ://simpleot.googlecode.com/svn-history/r32/SimpleOT/trunk/SimpleOT/Scripting/Lua.cs

我使用 lua52 是因为它支持 VC++2003。

于 2012-05-11T19:05:53.413 回答