Недавно я решил принять довольно большой проект по разработке программного обеспечения, который будет включать разработку приложения на основе клиент-сервер. Мой план состоит в том, чтобы развивать как можно больше клиентов: включая родной iPhone, Android и Blackberry Apps, а также веб-приложение.
Для моего сервера я планирую использовать VPS (возможно, с slicehost.com), использующий вкус Linux с базой данных MySQL. Мой первый вопрос заключается в том, что должна быть моей стратегией для клиентов, чтобы взаимодействовать с сервером. Мои идеи:
-
Связь HTTP-POST или GET с PHP script.
Это то, с чем я знаком - передача информации в PHP script из формы, работа с ней и возвращение вывода. Я предполагаю, что хочу возвращать выходные данные клиентам как некоторую строку на основе XML или JSON. Я также предполагаю, что хочу создать хорошо определенный API для клиентов, которые хотят взаимодействовать с моим сервером. -
Сокетная связь с помощью PHP script, Java-программы или программы на С++
С этим я не знаком. Я работал с основными учебниками по созданию script или простого приложения, которое создает сокет, прослушивает соединение и возвращает данные. Я предполагаю, что этот метод намного меньше коммуникационных данных, чем метод на основе HTTP. Моя мечта заключается в том, чтобы быть ЛОТОКОМ одновременных клиентов, которые все работают с сервером/базой данных. Я не уверен, что простой коммуникационный дизайн на основе HTTP/PHP скрипт может эффективно масштабироваться для удовлетворения потребностей многих клиентов. Кроме того, я могу в конечном итоге захотеть возможности сервера-Push для клиентов, вызванных различными событиями сервера. Я также не уверен, какой язык программирования лучше всего подходит для этого. Если эффективность является большой проблемой, я бы предположил, что PHP скрипт может быть недостаточно эффективным?
Есть ли общепринятый способ сделать это? Для меня это попытка преодолеть разрыв между некоторыми моими текущими навыками. У меня большой опыт работы с PHP и взаимодействие с базой данных MySQl для обслуживания динамических веб-страниц. У меня также есть большой опыт разработки собственных приложений для iPhone (однако ни один из них не имел значительного обмена на основе сервера). Также я работал с Java/С++, и я разработал приложения на обоих языках, которые связаны с MySQL.
Я не ожидаю, что мои клиенты отправят/получат огромное количество данных на/с сервера. Что-то на одном уровне с набором строк для данного события на стороне клиента.
Другой вопрос: использование VPS - хорошая идея? Я, очевидно, не хочу платить за выделенный сервер (slicehost предлагает VPS, начинающийся с ~ $20/месяц), и я предполагаю, что VPS сможет удовлетворить требования нескольких первоначальных клиентов. По мере того, как все больше и больше пользователей начинают взаимодействовать с моим сервером, я предполагаю, что можно будет перейти на более крупные "срезы" и, возможно, в конечном итоге переместиться на выделенный сервер, если это необходимо.
Спасибо за совет!:)