8

由于 MS似乎已经在服务器端(ASP.NET Futures)和客户端(Silverlight)的最新 DLR 中杀死了托管 JavaScript,是否有人成功使用过时的 API 来允许使用 JScript.NET 对其应用程序对象进行脚本编写和/或可以解释如何做到这一点?如果 Mono/JScript 解决方案稳定且满足以下要求,它也可能是可接受的。

我们有兴趣从使用 Microsoft JScript 引擎和 ActiveScript API 的脚本宿主升级到具有更高性能和更容易扩展的东西。我们有超过 16,000 个服务器端脚本,源代码超过 42MB,因此重写为另一种脚本语言是不可能的。

我们的具体要求是:

  • 性能明显优于 Microsoft JScript (ActiveScript) 引擎
    • 更好的运行时性能和/或
    • 保留预解析或编译的脚本(不要在每次运行时重新解析)
    • 较低或相等的内存消耗
  • 完全兼容 ECMA-262 ECMAScript
    • 可以容忍一点移植
  • 将自定义对象注入脚本命名空间
    • .NET 对象(不是硬性要求)
    • COM 对象或包装在 .NET 中的 COM 对象
  • 从脚本实例化 COM 对象
    • à la "new ActiveXObject(progid)"
    • 考虑到前面的低优先级
  • 包含文件
    • 将“帮助脚本”预加载到脚本执行上下文中
    • “包含”函数或语句(易于创建,鉴于上述情况)
  • 支持全局范围内的代码
    • 在全局范围内执行代码
    • 保留在全局范围内初始化的值
    • 从全局范围中提取值
    • 在全局范围内注入和替换值
  • 调用脚本定义的函数
    • 带参数
    • 并可以访问先前初始化的全局范围
  • 源码级调试
  • 商业或开源支持
  • 过时的 API
4

7 回答 7

3

我在这里回答了一个类似的问题。看看IronJS,一个在 DLR 上运行的 F# 中的 JavaScript 实现。

于 2010-04-08T20:22:24.317 回答
2

迟早,我想有人会写一个 DLR Javascript。我知道这对你现在不是很方便,但也许你可以开始这个项目。我怀疑使用 JScript.NET 会有更好的成本/收益分析。

于 2009-06-02T17:08:39.700 回答
1

如果离开 .NET 和 Microsoft 对您来说没问题,那么您应该尝试 Mozilla 的Rhino。它是完全用 Java 编写的 JavaScript 的开源实现。许多现代服务器端 js 库都针对这个平台。

于 2009-06-16T15:16:54.053 回答
1

我使用了 CSScript.net,因为它允许您将 C# 作为脚本平台运行。从网站:

CS-Script 结合了 C# 和 FCL 的强大功能和丰富性以及脚本系统的灵活性。CS-Script 对系统和网络管理员、开发人员和测试人员很有用。对于任何需要自动化来解决各种编程任务的人。

CS Script 满足您制定的所有条件。我在生产中使用它作为 Boo 的替代品,它的表现非常好。您可以在这里看到它的实际效果。

于 2009-12-23T00:38:10.763 回答
0

Com interop 的使用意味着您仅限于一个 MS 解决方案,Java 和开源希望尽可能少地使用它。

我没有看到任何支持您所有要求的解决方案,要么您放弃所有 COM/.NET 的东西并使用 Java (Rhino)/Linux/开源,要么您质疑使用 Javascript 作为您的服务器语言,即使在我们使用 PHP 的 Linux 世界中/Python/Ruby 如果我们不能运行 Java,则在服务器上更多。您不会看到 Java 脚本的性能大幅提升,因为语言是主要障碍。

我不会指望人们编写新的 DLR,因为服务器 Java 脚本正在快速消亡。

考虑到您想要性能,F# 怎么样,Microsoft 将保持对 Jscript 引擎的支持至少 5 年,让您有时间在 F# 中创建新东西,同时慢慢迁移代码。

于 2009-12-01T04:40:05.420 回答
0

侏罗纪引擎是活生生的。

从他们的 codeplex 网站:

  • 支持所有 ECMAScript 3 和 ECMAScript 5 功能,包括 ES5 严格模式
  • 经过良好测试 - 通过超过五千个单元测试(超过三万个断言)
  • 简单而强大的 API
  • 将 JavaScript 编译成 .NET 字节码 (CIL);不是口译员
  • 部署为单个 .NET 程序集(无本机代码)
  • 对 Visual Studio 中集成调试的基本支持
  • 使用轻量级代码生成,因此生成的代码完全被垃圾回收
  • 在 .NET 3.5、.NET 4 和 Silverlight 上测试
于 2013-12-08T23:29:26.533 回答
0

你见过 ROScript 吗? http://www.remobjects.com/script.aspx

支持 PascalScript 和 ECMAScript (Javascript) 语法

于 2013-07-22T12:59:39.963 回答