JScript.NET可以用来编写.NET应用程序的脚本吗?

时间:2009-06-01 23:53:59

标签: mono automation dynamic-language-runtime jscript.net managed-jscript

自服务器端(ASP.NET Futures)和客户端(Silverlight)的MS appears to have killed Managed JavaScript in the latest DLR以来,任何人都成功地使用了非过时的API来允许使用JScript.NET和/来编写应用程序对象的脚本或者可以解释怎么做? Mono / JScript解决方案也可以接受,如果它稳定并满足以下要求。

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

我们的具体要求是:

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

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

如果离开.NET并且微软对你没问题,那么你应该试试Mozilla的Rhino。它是完全用Java编写的JavaScript的开源实现。很多现代服务器端js库都以这个平台为目标。

答案 3 :(得分:1)

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

  

CS-Script结合了力量和   丰富的C#和FCL与   脚本系统的灵活性。   CS-Script可用于系统和   网络管理员,开发人员和   测试人员。对于任何需要的人   自动化解决各种问题   编程任务。

CS脚本满足您列出的所有条件。我在生产中使用它作为Boo的替代品,它表现得非常好。您可以在行动here中看到它。

答案 4 :(得分:0)

使用Com interop意味着您只能使用MS解决方案Java和Opensource希望尽可能少地使用它。

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

由于服务器Java脚本快速死亡,我不会指望人们编写新的DLR。

考虑到你想要性能,对于F#而言,微软将保持Jscript引擎至少5年的支持,让你有时间在F#中创建新东西,同时慢慢迁移代码。

答案 5 :(得分:0)

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

支持PascalScript和ECMAScript(Javascript)语法

答案 6 :(得分:0)

Jurrassic - 引擎还活着并且正在踢。

从他们的codeplex网站:

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