8

由于服务器端(ASP.NET Futures)和客户端(Silverlight)的MS appears to have killed Managed JavaScript in the latest DLR,任何人都可以成功地使用非过时的API来允许使用JScript.NET脚本化他们的应用程序对象和/或可以解释如何这样做? Mono/JScript解决方案如果稳定且符合以下要求,也可能是可以接受的。是否可以使用JScript.NET来编写.NET应用程序的脚本?

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

我们的具体要求是:

  • 比微软的JScript(ActiveScript)发动机
    • 更好的运行时性能和/或
    • 保留预先分析和编译脚本的Noteably更好的性能(唐每次运行都不重复)
    • 内存消耗较低或相等
  • 全ECMA-262的ECMAScript兼容性
    • 有点移植是可以容忍的自定义对象的
  • 注入脚本命名空间
    • .NET对象(不是硬性要求)
    • 包装在COM对象或COM对象中。COM的NET
  • 实例化从脚本 对象
    • 点菜 “新的ActiveXObject(进程id)”
    • 低优先级考虑到前述
  • 包含文件
    • 预将“助手脚本”加载到脚本执行上下文中
    • 的“包括”功能或声明(易于创建,给出了上述)在全球范围
  • 支持代码
    • 执行的代码在全球范围
    • 保留值中的全局初始化范围
    • 在全球范围内
    • 提取从全球范围
    • 注入和替换值的值
  • 呼叫脚本定义的函数
    • 与参数
    • ,并获得了先前初始化全球范围内
  • 源代码级调试
  • 商业或开源支持
  • 非过时的API
+1

微软是否仍然支持Silverlight中的托管JScript? – Nosredna 2009-06-02 00:55:30

+1

不是,从Silverlight也没了。看到这个答案:http://stackoverflow.com/questions/775339/where-can-you-download-managed-jscript-for-the-dlr/886173#886173 – 2009-06-02 03:51:30

+1

这非常令人震惊。 – Nosredna 2009-06-02 03:54:30

回答

2

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

1

如果移动从.NET和Microsoft走是确定适合你,那么你应该尝试Mozilla的Rhino。它是完全用Java编写的JavaScript的开源实现。现代服务器端js库很多都是针对这个平台的。

0

使用COM互操作意味着你被限制到MS解决方案Java和开源要尽量少用它做。

我没有看到任何支持所有需求的解决方案,要么丢弃所有COM/.NET的东西,而要使用Java(Rhino)/ Linux/Open源代码,或者在JavaScript中使用Javascript作为服务器语言如果我们不能运行Java,我们会在服务器上使用更多的PHP/Python/Ruby。由于语言是主要障碍,所以您不会看到Java脚本的巨大性能提升。

我不会指望编写新的DLR作为服务器的人Java脚本正快速死去。

考虑到你想要的性能,怎么样F#,微软将继续支持至少5年给你的时间在F#中创建新的东西,而你慢慢迁移代码JScript引擎。

1

我已经使用了CSScript.net,因为它可以让你运行C#作为脚本平台。从该网站:

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

CS脚本可以满足您制定的所有条件。我用它作为Boo的替代品,它的表现非常好。你可以在行动here看到它。

3

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

0

Jurrassic - 发动机是活蹦乱跳。

从他们的CodePlex网站:

  • 支持所有的ECMAScript 3和ECMAScript 5功能,包括ES5严格模式
  • 很好的测试 - 经过五千年的单元测试(超过三万断言)
  • 简单而强大的API
  • 将JavaScript编译为.NET字节码(CIL);不解释器
  • 部署为单个.NET组件(没有本机代码)
  • 为Visual Studio中集成调试基本支持
  • 使用重量轻的代码生成,所以生成的代码是完全垃圾回收
  • 测试在.NET 3.5,.NET 4和Silverlight上
相关问题