Node.js和.NET相结合的项目Edge.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中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(Node.js和.NET相结合的项目Edge.js)