Выбор фреймворка для сервера API - PullRequest
2 голосов
/ 07 июля 2011

Я хочу построить сервер API со следующими чертами:

  • Обслуживает только HTTP-запросы в формате JSON / XML (без веб-страниц).
  • В основном интенсивно использует БД, не так сильно загружает процессор.
  • Должно быть хорошо масштабируемым.
  • Имеет универсальные внешние интерфейсы: веб-браузеры, нативные мобильные (сейчас Android и iOS)

У меня есть опыт работы с Apache Tomcat, httpd, MySQL и PHP, так что это, очевидно, мой выбор по умолчанию. Тем не менее, прежде чем автоматически идти туда:

Вы бы порекомендовали любое другое сочетание технологий (Node.js, Rails ...) для этого типа сервера?

Меня больше всего интересуют преимущества / недостатки производительности / масштабируемости.

Ответы [ 3 ]

3 голосов
/ 07 июля 2011

DB интенсивно означает, что IO интенсивно.Node.js обеспечивает асинхронный ввод-вывод, и в качестве бонуса 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 );
2 голосов
/ 07 июля 2011

Я бы лично использовал node.js.

Обслуживает только HTTP-запросы JSON / XML (без веб-страниц).

В настоящее время большинство API-интерфейсов поддерживают только JSONи я бы посоветовал вам сделать то же самое.В node.js создание JSON так же просто, как вызов JSON.stringify для объекта.

В основном интенсивно использует БД, не так сильно загружает процессор.

узел.js делает неблокирующий ввод-вывод и имеет очень хорошую производительность с некоторыми базами данных, такими как, например, redis, mongodb.

Должен быть хорошо масштабируемым.

node.js очень быстрыйи вы можете использовать NGinx для масштабирования, если один блок не обрезает его, но, вероятно, одного одного блока будет достаточно.

Имеет универсальные интерфейсы: веб-браузеры, собственные мобильные (Android и iOS длясейчас)

Я думаю, что ваш API, вероятно, должен обеспечивать oauth, как это делают большинство других API.Это единственная проблема с node.js, я думаю, потому что доступна только одна библиотека , и я не знаю качество этого пакета

0 голосов
/ 23 июня 2012

Rails делает REST из коробки. Он имеет хорошую поддержку ответов JSON и непревзойденный ORM для работы и абстрагирования от взаимодействия с базой данных и организации вашего кода в соответствии с ресурсами.

Ярлык: поиск по методу as_json.

...