我试图寻找类似的问题,但找不到。
我有一个面向业务的 ASPNET1.1 Web 应用程序。并且有许多规则在应用程序中进行了硬编码。
我想开始使用Boo作为脚本语言,开发人员可以使用它在那里编写一些逻辑(而不是最终用户(。
每当 BL 中完成更改时,我只会更新"脚本文件",部署到服务器,仅此而已。无需编译。这很重要。
所以我有两个问题:
- 似乎只有CS-Script和Boo支持NET1.1,我不喜欢CSScript,因为它需要每个脚本的exe或编译的dll。Boo是正确的选择吗?我想使用JINT(NET2.0+(或LUA(找不到导入C#的方法(。
- 执行 Boo 有多快?我不想编译它(我知道这很快,因为它将是一种静态语言(。我只想使用 Boo 解释器评估函数。
顺便说一下,我要执行的业务逻辑很简单。它应该只是这样的:
function(a, b)
{
return a["Type"] == b["Type"];
}
其中 a 和 b 只是 Hashtable 或 DataRow。所以我实际上并不需要系统导入等等。
提前致谢
我丢弃了Boo,因为即使我只想使用Eval方法,Boo也会自动编译表达式并将程序集生成的加载到AppDomain中。
由于我运行的是 ASPNET1.1 和一个大型 Web 应用程序(数千个用户(,因此效率不高,速度也不快。
即使我创建了一个内部 AppDomain 并在其中运行脚本,以便恢复内存。
如果我在同一个 AppDomain 中运行,内存将被吃掉,因为这些新程序集将被加载并且永远不会卸载。
因此,我猜从Ricardo在一些论坛上的回应来看,Boo语言从未被设计为CLR语言的意图,但它击败了围绕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。