API服务器框架的选择


Choice of framework for an API server

我希望建立一个具有以下特征的API服务器:

  • 只提供JSON/XML HTTP请求(不提供网页)。
  • 主要是DB密集型,而不是CPU密集型。
  • 应该是高度可扩展的
  • 具有多功能的前端:web浏览器,本机移动(Android和iOS目前)

我有Apache Tomcat, httpd, MySQL和PHP的经验,所以这些显然是我的默认选择。但是,在自动跳转到这里之前:

对于这种类型的服务器,你会推荐任何其他技术 (Node.js, Rails…)吗?

我最感兴趣的是性能/可伸缩性相关的优点/缺点

DB密集型意味着它是IO密集型的。Node.js提供异步IO,作为奖励,JavaScript原生使用json。

查看资源:http://www.nodecloud.org/

这里有一个简单的例子让你开始:

var express = require('express');
var Client = require('mysql').Client,
  sqlclient = new Client(),
  sql_database = '...';
sqlclient.host = '...';
sqlclient.user = '...';
sqlclient.password = '..';
sqlclient.connect( function (err) {
  if( err ) {
    throw(err);   
  }
  console.log('connected to mysql on ...');
});
var query = 'SELECT . . . ';
var app = express.createServer();
app.get('/', function (req, res, next) {
  sqlclient.query('USE '+sql_database);
  sqlclient.query( query, function (err, results, fields) {
    res.send(JSON.stringify(results));
  });
});
app.listen( 3000 );

我个人会使用node.js。

只提供JSON/XML HTTP请求网页)。

现在大多数API只支持JSON,我建议你也这样做。在node.js中创建JSON就像在对象上调用JSON.stringify一样简单。

主要是DB密集型的,不是那么多CPU密集型。

node.js做非阻塞IO,有很好的性能与一些数据库,如redis, mongodb。

应该是高度可伸缩的

node.js是非常快的,如果单个盒子不能切割它,你可以使用NGinx来扩展,但可能一个单独的盒子就足够了。

具有多功能前端:网页浏览器,原生移动设备(Android)和iOS)

我认为你的API应该像大多数其他API一样提供oauth。我认为这是node.js唯一的问题,因为只有一个库可用,我不知道这个包的质量

Rails是开箱即用的。它对JSON响应有很好的支持,无与伦比的ORM用于处理和抽象数据库交互内容,并根据资源组织代码。

快捷方式:查找as_json方法