是否可以将v8编译为托管程序集?

时间:2012-04-13 04:45:55

标签: .net clr mozilla v8

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

我可以看到几个选项:

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

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

谢谢!

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

0 个答案:

没有答案