Node.js 和.NET 相结合的项目 Edge.js

阅读数:4240 2013 年 4 月 1 日

话题:JavaScriptC#Node.js语言 & 开发

Javascrip 项目Node.js 现在可以在同一个进程中与.NET 代码一起运行了,这得益于 Edge.js 项目(前身为owin)。跟IKVM 项目将 Mono 和.NET 结合一样,Edge.js 提出了 “两全其美”的方法将.NET 和 Node.js 结合。这样开发者可以充分利用每种工具的优势去最大限度提高他们项目的效率。

Edge.js 由 Tomasz Janczuk 创立,其目的在于让开发人员最大限度地发挥 Node.js 的威力,而不用使用非 CLR 的语言,如 C/C ++。 Edge.js 实现的方法提供了若干好处,包括在.NET 中执行计算密集型的运算时不阻塞 Node.js 的事件循环。它也允许使用 C# 编写 Node.js 的插件去访问 Windows 平台的特定功能,而这些都无需使用 C 或者 C++。

Node.js 和 Edge.js 之间的连接是无缝的和相互的:Node.js 的可以调用.NET 方法,.NET 代码也可以调用 Node.js。Edge.js 可以在运行时编译 C# 源代码,也可以在 Edge.js 运行前预编译。

InfoQ 有幸和 Janczuk 探讨该项目并谈及他将来对 Edge.js 的计划:

InfoQ: 除了仅仅希望提供将C#Node.js结合外,还有什么特别的动机么?

Janczuk: “Edge.js 致力于为开发人员提供一个在一定范围内根据任务特点选择使用技术的机会,而不是在整个应用中去选择。Edge.js 基于一切都可以通过 Node.js 或者.NET 去实现的前提,但某些具体的功能可能用其中一种技术更加适合。在 Edge.js 之前,开发人员必须在整个应用程序范围内选择是使用 Node.js 还是.NET。而有了 Edge.js,开发人员可以根据他们应用中哪些部分更适合使用 Node.js 或.NET 而作出选择。”

InfoQ: .NET的例子全部是使用C#Edge.js需要C#吗?如果需要的话,是否支持.NET平台中的其他语言?

Janczuk:“Edge.js 允许.NET 代码通过指定一个预编译的 CLR 程序集,或者在 Node.js 应用中包含.NET 源代码的方法去和 Node.js 应用整合。Edge.js 支持任何可以生成一个 Func<object,Task<object>> 委托的预编译程序集的 CLR 语言。当在 Node.js 应用中使用.NET 代码时,Edge.js 目前只支持 C#。”

InfoQ:  在接下来的612个月项目的目标是什么?

Janczuk:“Edge.js 计划使用相对较少的基本概念并保留规模小的组件就能在进程内整合.NET 和 Node.js。对于某些特定场景的功能(例如访问 MS SQL、写 Windows 事件日志,或访问 X.509 证书存储区),会作为新的依赖于 Edge.js 的模块而提供,而不是扩大 Edge.js 本身的范围。Edge.js 本身也有一些值得注意的计划,包括对 Mono 的支持,编译 C# 之外的 CLR 语言和在.NET 进程中托管 Node.js。”

InfoQ:   由于现在受雇于微软,那么将来这个项目依然是独立的项目呢还是在某些部分将来会正式成为微软的工具?

Janczuk: “虽然微软也拥抱开源技术,但到目前为止 Edge.js 并没任何计划要成为任何微软产品的一部分。”

Edge.js 是一个在 Apache 许可协议 2.0 下的开源项目。Janczuk 在其项目的主页上提供了项目概况,还包括样例代码以让开发者了解更多的信息。

查看英文原文Edge.js Combines Node.js with .NET


感谢姚琪琳对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。