Самый дешевый способ (платформа/язык) для внедрения веб-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).