1

其原因是 .net 平台上缺乏优质、快速的 JavaScript 引擎。想象一下,您需要能够在运行脚本中访问许多 .net 对象(例如 ORM 模型),以便最终用户可以自定义它们。

我可以看到几个选项:

  • 使用现有的 .net 实现之一。令人惊讶的是,只有少数可行的选择:jurassicironjs。Jurassic 非常好,稳定,支持 Ecma5,但与原生引擎(mozilla,v8)相比速度较慢。IronJS 很有希望,但它不正式支持 Ecma5,而且它的开发似乎已经放缓。
  • 将托管代码与混合应用程序中的本机引擎链接。它确实有效,我以前用 mozilla 引擎做过。问题是,如果您有很多应该在脚本中可见的 .net 对象,您将不得不为原生/托管转换付出高昂的代价,这可能会影响性能。
  • 将本机引擎(v8 是更好的候选者)编译为托管程序集并直接在 .net 中使用。基本上,这是一种消除上述权衡的尝试。

我的问题是第三种方法是否值得尝试?有人已经试过了吗?

谢谢!

更新(2012 年 7 月 2 日):如果有人感兴趣,我们已经在 mozilla jseng 上做了这样的实验。我的一位同事花了很多时间试图让它发挥作用。最后,当我们达到所有 mozilla jseng 代码都被托管并且代码中几乎没有本机/托管转换的地步时,结果出乎意料 - 性能是相同的。因此,万一原生/托管转换不是主要问题。

4

0 回答 0