首先, node .js不是多线程的.这很重要.你必须是一个非常有天赋的程序员,才能设计出在线程环境中完美工作的程序.线很硬.
你必须是一个god岁的人才能维护一个设计不当的线程项目.大型项目中有很多难以避免的问题.
其次,整个平台设计为异步运行.你看到ASP了吗.NET项目,其中每个IO交互都是异步的?简单地说,ASP.NET不是为事件驱动而设计的.
然后,由于每个打开的连接有一个线程,以及整个扩展问题,内存占用也会增加.如果我错了,请纠正我,但我不知道如何避免在ASP中 for each 连接创建新线程.网
另一个问题是一个 node .js请求在未被使用或等待IO时处于空闲状态.另一方面,C#thread会Hibernate .现在,可以睡眠的线程数量是有限制的.在 node 中.js,您可以轻松地在一台开发机器上同时并行处理10k客户端.您try 在一台开发机器上并行处理10k线程.
JavaScript本身作为一种语言使异步编码更容易.如果你还在使用C#2.0,那么异步语法真的很麻烦.如果你到处定义Action<>
和Function<>
并使用回调,很多开发人员就会感到困惑.ASP.NET项目是以事件方式编写的,一般ASP.NET开发者.
至于线程和内核. node .js是单线程的,通过创建多个 node 进程进行扩展.如果你有一个16核,那么你可以运行16个 node 实例.js服务器,只有一个 node .前面是js负载均衡器.(如果需要的话,可以使用nginx负载平衡器).
这些都是从一开始就以非常低的级别写入平台的.这不是后来固定的功能.
Other advantages
node .js比上面提到的要多得多.以上是唯一的原因.js处理事件循环的方式比在ASP中使用异步功能要好.网
- 表演很快.很快.
- Node的一大优势是.js是它的底层API.你有很多控制权.
- 将整个HTTP服务器直接集成到代码中,然后外包给IIS.
- 你有整个nginx和Apache的比较.
- 整个C10K挑战由 node 处理得很好,而不是由IIS处理
- AJAX和JSON的通信感觉自然而简单.
- 实时通信是Node的一大优点.js.这是为它而做的.
- 可以很好地使用基于文档的nosql数据库.
- 也可以运行TCP服务器.可以进行文件写入访问,可以在服务器上运行任何unix控制台命令.
- 您可以使用javascript查询数据库,例如CouchDB和map/reduce.用JavaScript编写客户端.在web堆栈上开发时没有上下文切换.
- 丰富的社区驱动开源模块集. node 中的所有内容.js是开源的.
- 占地面积小,几乎没有依赖性.可以构建 node .你自己找.
Disadvantages of Node.js
这很难.很年轻.作为一名skilled名JavaScript开发人员,我很难用Node编写一个网站.js只是因为它的低水平性质和我的控制水平.这感觉就像C.很多灵活性和力量,无论是用于我还是吊死我.
API没有冻结.变化很快.我可以想象,因为数量 node ,我不得不在5年内完全重写一个大型网站.js将在那时更改.这是可以做到的,您只需要知道 node 上的维护.js网站并不便宜.
further reading
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
http://blip.tv/file/2899135
http://nodeguide.com/