关注 Node.js 的 C++ 移植版 node.native

  • 崔康

2012 年 2 月 14 日

话题:C++DevOpsNode.js语言 & 开发架构

Node.js 逐渐受到社区的广泛关注,最近 Node.js 的 C++ 移植版node.native也悄然出现。node.native 遵循C++11语言,目前还处于紧张的开发阶段,没有正式可靠的版本。

采用 node.native 开发 Web 应用,一如 Node.js 的风格一样简洁和强大。以 Web 服务器为例,node.native 的实现代码如下:

#include <iostream>
#include <native/native.h>
using namespace native::http; 

int main() {
    http server;
    if(!server.listen("0.0.0.0", 8080, [](request& req, response& res) {
        res.set_status(200);
        res.set_header("Content-Type", "text/plain");
        res.end("C++ FTW\n");
    })) return 1; // Failed to run server. 

    std::cout << "Server running at http://0.0.0.0:8080/" << std::endl;
    return native::run();
}

而采用原装 Node.js 实现的代码如下:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/'); 

为何 node.native 项目值得关注呢?devthought网站列举了三条理由:

  1. C++ 语言增加了一些提高语言可用性的特性。特别是在匿名函数的支持,在 node.native 项目中应用广泛。
  2. 采用 C++ 语言可以更方便地与现有的 C/C++ 函数库交互。
  3. 不少公司基于性能的考虑,采用 C++ 编写 Web 应用程序和服务器。

除此之外,devthought网站还针对 Node.js、LuaJIT 和 C++(node.native)三者做了一个基本的性能基准测试,结果是 node.native 最佳,测试结果比 Node.js 快 80%。当然这只是一个粗略的评估,鉴于 node.native 版本还不稳定,在得到精确的结论之前,我们还需要做严格的基准测试。

Node.js 社区最近也有些变化,Node.js 创始人 Ryan Dahl宣布Isaac Schlueter 将接替自己的位置,而自己将转而搞其他研究项目。而微软则兑现了与 Joyent 的合作承诺,发布了支持 Node.js 的 Windows Azure SDK,Azure Node Package Manager (NPM) 模块允许开发人员在任何环境中使用 Windows Azure 存储服务来部署 Node 应用程序,还可以使用最新集成的 Cloud9 IDE 在 Azure 云端部署代码。

InfoQ 中文站会继续关注 Node.js 的发展,感兴趣的读者可以阅读《深入浅出 Node.js》专栏已发布的系列文章:

  1. 什么是 Node.js
  2. Node.js&NPM 的安装与配置
  3. 深入 Node.js 的模块机制
  4. Node.js 的事件机制
C++DevOpsNode.js语言 & 开发架构