关注Node.js的C++移植版node.native
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网站列举了三条理由:
- C++语言增加了一些提高语言可用性的特性。特别是在匿名函数的支持,在node.native项目中应用广泛。
- 采用C++语言可以更方便地与现有的C/C++函数库交互。
- 不少公司基于性能的考虑,采用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云端部署代码。