Самый дешевый способ (платформа/язык) для внедрения веб-API RESTful для iPhone-приложения?

Я разрабатываю приложение для iPhone и хочу создать какой-то RESTful API, чтобы разные пользователи приложения могли обмениваться информацией/данными. Создание сообщества.

Скажите, что мое приложение - это своего рода игра, и я хочу, чтобы пользователь мог опубликовать свой рекордер в глобальной таблице лидеров, а также сохранить список друзей и посмотреть их результаты. Мое приложение не похоже на это, но оно показывает вид коллективного доступа к информации, который мне нужно реализовать.

Как я могу реализовать это, нужно настроить сервер PHP и MySQL и иметь php script, который взаимодействует с базой данных и опосредует запросы между БД и каждым пользователем на iPhone, выполнив запрос GET и возвращая строку JSON.

Это хороший способ сделать это? Мне кажется, что использование PHP - это медленный способ реализовать это, а не компилируемый язык. Я мог бы быть очень неправ. Я пытаюсь удержать свои счета за хостинг, потому что планирую выпустить приложение бесплатно. Я действительно признаю, что реализация, которая лучше работает с точки зрения циклов процессора и использования ОЗУ (например, что-то, скомпилированное в С#?), Может потребовать более дорогостоящие решения для хостинга, чем сервер LAMP, поэтому на самом деле может оказаться более дорогостоящим с точки зрения $/запрос.

Я также хочу, чтобы моя реализация была масштабируемой в редком случае, когда многие люди начали использовать приложение. Увеличивает ли объем использования отношение производительности/стоимости к другой реализации? То есть если у меня есть 1k запрос/день, может быть дешевле использовать PHP + MySQL, но 1M запросов/день могут сделать что-то еще дешевле?

Подводя итог, как бы вы реализовали (довольно простую) удаленную базу данных, к которой можно было бы получить удаленно с помощью HTTP (S), чтобы минимизировать хостинг-счета? Какое хостинг-решение и какая платформа/язык?

ОБНОВЛЕНИЕ: по предложению Карла Я попробовал: Ruby (язык) + Sinatra (фреймворк) + Heroku (хостинг приложений) + Amazon S3 (статический хостинг файлов). Для тех, кто читает это, у кого может быть такая же дилемма, у меня была эта установка потрясающая: легко масштабируемая (до "бесконечности" ), доступная и простая в использовании. Спасибо Карлу!

Не могу комментировать спецификации БД еще, потому что я еще не реализовал это, хотя для моих простых требований к запросу CouchDB и MongoDB кажутся хорошим выбором, и они интегрированы с Heroku.

Ответ 1

Считаете ли вы использование Sinatra и его размещение на [Heroku]? Это именно то, что Sinatra превосходит (службы REST). И хостинг с Heroku может быть бесплатным, в зависимости от объема данных, который вам нужно хранить. Просто сохраните все поддерживающие файлы (изображения, javascript, css) на S3. Вы будете в облаке и полетете в мгновение ока.

Это может не соответствовать вашим желаниям PHP, но, честно говоря, это не становится проще, чем Sinatra.

Ответ 2

Это сводится к компромиссу между затратами и опытом.

Если у вас есть опыт, я бы определенно посмотрел на ту или иную инфраструктуру, основанную на облаке, что-то вроде Google App Engine. Какая облачная платформа вы используете, зависит от того, какой опыт у вас есть на разных языках (AppEngine работает только с Python/Java, например). В целом, хотя масштабируемые платформы на основе облаков имеют больше "gotchas" и нуждаются в большем количестве ноу-хау, потому что они специально настроены для масштабирования высокого класса (и в некоторых случаях требуют знания концепций уровня предприятия).

Если вы хотите как можно быстрее и проще работать и как можно быстрее, я бы лично пошел на установку CakePHP. Настройте данные модели для представления основных объектов, которыми вы управляете, а затем используйте замечательную волшебную конвенциональную магию CakePHP, чтобы легко выявлять обновления CRUD на этих моделях!

Ответ 3

Технология, которую вы используете для реализации служб REST, будет иметь гораздо меньшее влияние на производительность и стоимость хостинга, чем на использование HTTP. Обучение использованию HTTP - это гораздо больше, чем просто обучение использованию GET, PUT, POST и DELETE.

Использовать любую технологию на стороне сервера, которую вы уже знаете, и потратить некоторое время на чтение RFC2616. Вы сэкономите массу времени и денег.

Ответ 4

В вашем случае сервер базы данных, к которому обращаются по каждому запросу. так что даже если вы скомпилировали язык (скажем, С# или java), это не имеет большого значения (если вы не делаете какое-либо преобразование или обработку данных).

Таким образом, сервер БД должен хорошо масштабироваться. здесь ваш выбор языка и БД должен быть хорошо настроен с операционной системой хоста.

Короче PHP + MySQL хорош, если вы отправляете/получаете строки JSON и сохраняете/извлекаете в БД с минимальной обработкой данных.

следующее приложение становится популярным, и если ваше приложение не требует частых обновлений существующих данных, вы можете переместить такие данные в очень масштабируемые базы данных, такие как MongoDB (JSON friendly).