Edge.js:让.NET和Node.js代码比翼齐飞

通过Edge.js项目,你可以在一个进程中同时运行Node.js和.NET代码。在本文 中,我将会论述这个项目背后的动机,并描述Edge.js提供的基本机制。随后将探 讨一些Edge.js应用场景,它在这些场景中可以为你开发Node.js程序提供帮助。

为何要使用Edge.js?

虽然许多应用程序只能用Node.js编写,不过有些 情况下又需要综合Node.js和.NET两者的优点。基于以下几个理由,你想要在程序 中使用.NET和Node.js:.NET框架和NuGet包提供了一个丰富的功能生态系统,它 很好地补充了Node.js和NPM模块;可能你希望在Node.js程序中重用某些现成 的.NET组件;也可能想使用多线程CLR运行CPU密集型的计算,而这绝非是单线程 的Node.js所擅长的;又或者你可能优先选择使用.NET框架和C#而不是使用C/C++ 编写原生的Node.js扩展来访问那些尚未通过Node.js暴露的操作系统机制。

一旦你决定在程序中使用Node.js和.NET,那么你必须将Node.js和.NET的组件 用进程壁垒将两者分离开来,并建立某种形式的进程间通信的机制,比如说HTTP :

Edge.js提供另一种类似的组建异构系统的方式。它允许你在单一进程 中同时运行Node.js和.NET代码,并且提供了V8和CLR之间的互操作机制。

使 用Edge.js可以在一个进程中运行Node.js和.NET,而不用将其分割为两个进程, 这样有两个主要的好处:更好的性能和更低的复杂性。

某个场景的性能测 试显示,从Node.js向C#发出的进程内Edge.js请求比两个进程间通过HTTP发送的 相同请求快32倍。与两个进程和进程间的通信信道相比,只处理一个单独的进程 ,明显降低了你需要解决的部署和维护的复杂性。

.NET欢迎 Node.js

接下来我将用一个基础实例讲解Edge.js的关键概念,这个例子是 从Node.js向C#发送请求。

第 1行引入事先从NPM安装的edge模块。Edge.js是一个原生的Node.js组件。Edge.js 的特殊之处在于,它被加载的时候便在node.exe进程内部开始代管CLR。

时间: 2024-12-30 06:40:26

Edge.js:让.NET和Node.js代码比翼齐飞的相关文章

【Node.js】2.开发Node.js选择哪个IDE 开发工具呢

安装完Node.js之后,就要为它选择一个有利的IDE用于开发. 相比较了多个IDE之后,定位在webstrom和sublime上. 有一个简单的比较: webstorm功能很丰富,前端开发工具的集大成者,相比sublime稍重一些 sublime插件也很丰富,界面也比较美观,很轻量,也有简单的project管理功能 这里选择使用sublime作为Node.js的开发工具. [着重建议下载使用英文版:http://www.sublimetext.com/3  因为之后会因为是汉化版的出现好多令人

node js webstorm-webstorm中的node.js问题,求解!!!

问题描述 webstorm中的node.js问题,求解!!! 创建新工程时,出现的..

Express.js 作者弃用 Node.js,转向 Go 语言

今天 Express 的作者 TJ Holowaychuk 发了一篇文章,正式宣告和 Node.js 拜拜了,转向 Go 语言. Go verses Node 如果你在做分布式工作,你会发现 Go 语言丰富的并发原语非常有帮助.虽然我们用 Node 的 generator 也可以做类似的事,但在我看来,generator 永远只能做一半.没有独立的栈错误处理和报告,充其量是中等.我也不想再等(Node)社区花3 年去整理(改善),尤其是我们已经有了可用并不错的解决方案. 在我看来,Go 语言的错

JS访问数据库[非Node.js]

提起服务器端 JavaScript,很多人第一反应都是 Node.js.其实 Java 6 开始包含 Script Engine,其中就自带了一个"阉割版"的 Mozilla Rhino - 纯 Java 实现的 JavaScript 解释器. 使用 jrunscript 就能启动这个解释器.使用 Rhino 的好处是你能使用 JavaScript 语言做开发,但又能使用现成的浩瀚的 Java 库!而且支持编译成 class 文件. 我以连接 Sqlite 数据库为例子抛砖引玉.首先创

了不起的node.js读书笔记之node.js中的特性_node.js

环境的变化带来了技术大跃进,机遇和挑战同时到来.基于我js也没有学,只好赶鸭子上架一起学了.(>﹏<) 1.先读读书 一开始就不知死活地看<深入浅出node.js>,弄得团团转,看完才知道这本书是要一定基础的.在网上搜刮到了41页的<node入门>,自己学着搭建了一个Web应用.并且在刷新成就感后,就抱读<了不起的node.js>.现准备看完这本书后再回读<深入浅出node.js>. 2.搭建环境 运行git上的例程(3次报错) 在官网下载msi

跟我学Node.js(四)---Node.js的模块载入方式与机制_javascript技巧

其它的如通过NPM安装的第三方模块(third-party modules)或本地模块(local modules),每个模块都会暴露一个公开的API.以便开发者可以导入.如 复制代码 代码如下: var mod = require('module_name') 此句执行后,Node内部会载入内置模块或通过NPM安装的模块.require函数会返回一个对象,该对象公开的API可能是函数,对象,或者属性如函数,数组,甚至任意类型的JS对象. 这里列下node模块的载入及缓存机制 1)载入内置模块(

Node.js巧妙实现Web应用代码热更新_node.js

背景 相信使用 Node.js 开发过 Web 应用的同学一定苦恼过新修改的代码必须要重启 Node.js 进程后才能更新的问题.习惯使用 PHP 开发的同学更会非常的不适用,大呼果然还是我大PHP才是世界上最好的编程语言.手动重启进程不仅仅是非常恼人的重复劳动,当应用规模稍大以后,启动时间也逐渐开始不容忽视. 当然作为程序猿,无论使用哪种语言,都不会让这样的事情折磨自己.解决这类问题最直接和普适的手段就是监听文件修改并重启进程.这个方法也已经有很多成熟的解决方案提供了,比如已经被弃坑的 nod

我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环_node.js

一,node.js的作用, I/O的意义,(I/O是输入/输出的简写,如:键盘敲入文本,输入,屏幕上看到文本显示输出.鼠标移动,在屏幕上看到鼠标的移动.终端的输入,和看到的输出.等等)   node.js想解决的问题,(处理输入,输入,高并发 .如 在线游戏中可能会有上百万个游戏者,则有上百万的输入等等)(node.js适合的范畴:当应用程序需要在网络上发送和接收数据时Node.js最为适合.这可能是第三方的API,联网设备或者浏览器与服务器之间的实时通信)   并发的意义,(并发这个术语描述的

node.js的multipart模块问题

问题描述 node.js的multipart模块问题 multipart模块已经安装好了,node.js代码中有一行var parser=new multipart.parser()为什么运行后该行代码会报错:multipart.parser is not a function 解决方案 Node.js工具模块Node.js 模块和包Node.js fs 模块 解决方案二: https://cnodejs.org/topic/4ffed8544764b729026b1da3

Node.js异步处理CPU密集型任务的新思路

Node.js擅长数据密集型实时(data-intensive real-time)交互的应用场景.然而数据密集型实时应用程序并不是只有I/O密集型任务,当碰到CPU密集型任务时,比如要对数据加解密(node.bcrypt.js),数据压缩和解压(node-tar),或者要根据用户的身份对图片做些个性化处理,在这些场景下,主线程致力于做复杂的CPU计算,I/O请求队列中的任务就被阻塞. Node.js主线程的event loop在处理所有的任务/事件时,都是沿着事件队列顺序执行的,所以在其中任何