【问题标题】:Choice of framework for an API serverAPI 服务器的框架选择
【发布时间】:2011-07-07 01:29:03
【问题描述】:

我正在寻找具有以下特征的 API 服务器:

  • 仅提供 JSON/XML HTTP 请求(无网页)。
  • 主要是 DB 密集型,而不是 CPU 密集型。
  • 应该是高度可扩展的。
  • 拥有多功能前端:网络浏览器、原生移动设备(目前为 Android 和 iOS)

我在 Apache Tomcat、httpd、MySQL 和 PHP 方面经验丰富,所以这些显然是我的默认选择。但是,在自动去那里之前:

您会推荐任何其他技术组合(Node.js、Rails...)用于这种类型的服务器吗?

我最感兴趣的是与性能/可扩展性相关的优势/劣势。

【问题讨论】:

    标签: php ruby-on-rails api tomcat node.js


    【解决方案1】:

    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。
    【解决方案2】:

    我个人会使用 node.js。

    仅提供 JSON/XML HTTP 请求(无 网页)。

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

    主要是数据库密集型,不是那么多 CPU 密集型。

    node.js 进行非阻塞 IO,并且在一些数据库(例如 redis、mongodb)上具有非常好的性能。

    应该是高度可扩展的。

    node.js 非常快,如果单框不切,可以使用 NGinx 进行缩放,但可能一个单框就足够了。

    拥有多功能前端: 网络浏览器,本机移动设备(Android 和 iOS)

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

    【讨论】:

    • 感谢您的出色回答。是的,我们显然计划实现 OAuth,但它将在不同的服务器上实现,所以它不一定是 Node.js。
    • @Niv 非常好。最好的选择可能是使用多个堆栈(PHP/Rails/etc)。例如,一开始 Twitter 只使用 rails,但现在他们也使用 Scala、Java(可能更多)。 Facebook 一开始只使用 PHP,现在有 C(HipHop => PHP)、Scala(Chat)。此外,所有大型网站都使用 C 语言,例如 memcached 来加速网站。
    【解决方案3】:

    Rails 提供开箱即用的 REST。它对 JSON 响应有很好的支持,在处理和抽象数据库交互内容以及根据资源组织代码方面具有无与伦比的 ORM。

    快捷方式:查找as_json 方法。

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2013-03-23
      • 2011-04-10
      • 1970-01-01
      • 2021-11-25
      • 2016-02-22
      相关资源
      最近更新 更多