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

Mono 可以使用JScript.NET编写.NET应用程序的脚本吗?,mono,automation,dynamic-language-runtime,jscript.net,managed-jscript,Mono,Automation,Dynamic Language Runtime,Jscript.net,Managed Jscript,由于MS同时适用于服务器端(ASP.NET Futures)和客户端(Silverlight),是否有人成功地使用了非过时的API来允许使用JScript.NET对其应用程序对象进行脚本编写,和/或可以解释如何这样做?如果Mono/JScript解决方案稳定且满足以下要求,则也可以接受 我们感兴趣的是将使用MicrosoftJScript引擎和ActiveScript API的脚本主机升级为更高性能和更易于扩展的主机。我们有超过16000个服务器端脚本,其源代码超过42MB,因此不可能重写为另一

由于MS同时适用于服务器端(ASP.NET Futures)和客户端(Silverlight),是否有人成功地使用了非过时的API来允许使用JScript.NET对其应用程序对象进行脚本编写,和/或可以解释如何这样做?如果Mono/JScript解决方案稳定且满足以下要求,则也可以接受

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

我们的具体要求是:

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

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

如果离开.NET和微软对你来说合适,那么你应该试试Mozilla的。它是完全用Java编写的JavaScript的开源实现。许多现代的服务器端js库都是针对这个平台的。

使用Com互操作意味着您仅限于MS解决方案,Java和开源尽可能少地使用它

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

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

考虑到您想要的性能,那么F#呢,Microsoft将至少在5年内保持对Jscript引擎的支持,让您有时间在F#中创建新内容,同时缓慢地迁移代码

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

CS脚本结合了电源和电源 C#和FCL的丰富性 脚本系统的灵活性。 CS脚本对系统和应用程序非常有用 网络管理员、开发人员和 测试人员。对于任何一个需要 解决各种问题的自动化 编程任务


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

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

你看过ROScript吗?

支持PascalScript和ECMAScript(Javascript)语法

引擎处于活动状态

从他们的codeplex站点:

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

微软还会在Silverlight中支持托管JScript吗?不会,也不再支持Silverlight了。看到这个答案:考虑添加ActiveXObjor支持到谷歌的V8引擎,在过去通过C++绑定到C++COM的一些工作。如果这被证明是可行的,你会发布一个答案。@thatismatt-你用过Rhino和Java-to-COM桥接器吗?你能评论一下性能,与C++代码的集成是否容易,等等?恐怕不行,对不起,我没多大帮助,尽管告诉我你的进展情况。跨平台的问题是,我们需要访问80多个Win32 RPC调用以及六个DCOM对象,如WSU和WMI。我喜欢F#,并将其用于原型制作、内部实用程序和目录管理(在家中为我妻子的在线商店),但正如所述,我们在服务器端有16000多个用JS编写的脚本,无法承担转换为另一种语言的成本。也就是说,我们已经研究过了,它与犀牛的结合可能会非常有趣。这是一个岩石和硬地的例子。。第一个问题是知道服务器端Javascript正在消亡,你用什么编写新代码?