Связь на основе сокета и HTTP для мобильного приложения клиент / сервер

Я ' Недавно я решил взять на себя довольно большой проект по разработке программного обеспечения, который будет включать разработку клиент-серверного приложения. Я планирую разработать как можно больше клиентов: включая собственные приложения для iPhone, Android и Blackberry, а также веб-приложение.

Для своего сервера я планирую использовать запущенный VPS (возможно, с сайта slicehost.com). разновидность Linux с базой данных MySQL. Мой первый вопрос: какой должна быть моя стратегия взаимодействия клиентов с сервером. Мои идеи:

  1. Связь с PHP-скриптом на основе HTTP-POST или GET.
    Это то, с чем я очень хорошо знаком - передача информации в PHP-скрипт из формы, работа с ней и возврат вывода. Я предполагаю, что хочу возвращать вывод клиентам в виде какой-то строки на основе XML или JSON. Я также предполагаю, что я Я хочу создать четко определенный API для клиентов, которые хотят взаимодействовать с моим сервером.

  2. Связь на основе сокетов с PHP-скриптом, Java-программой или C ++ программой
    Я менее знаком с этим. Я работал с базовыми учебниками по созданию сценария или простого приложения, которое создает сокет, прослушивает соединение и возвращает данные. Я предполагаю, что с этим методом намного меньше накладных расходов на передачу данных, чем с методом на основе HTTP. Я мечтаю о том, чтобы было много одновременных клиентов, работающих с сервером / базой данных. Я не уверен, что простой дизайн коммуникации на основе HTTP / PHP-скриптов может эффективно масштабироваться для удовлетворения потребностей многих клиентов. Кроме того, в конечном итоге мне может потребоваться возможность Server-Push для клиентов, запускаемых различными событиями сервера. Я' m также не уверены, какой язык программирования лучше всего подходит для этого. Если эффективность является большой проблемой, я могу предположить, что сценарий PHP может быть недостаточно эффективным?

Есть ли общепринятый способ сделать это? Для меня это попытка преодолеть разрыв между некоторыми из моих нынешних навыков. У меня большой опыт работы с PHP и взаимодействия с базой данных MySQl для обслуживания динамических веб-страниц. У меня также есть большой опыт разработки нативных приложений для iPhone (однако ни одно из них не имело существенной связи с сервером). Также я работал с Java / C ++ и разрабатывал приложения на обоих языках, которые взаимодействовали с MySQL.

Я не ожидаю, что мои клиенты будут отправлять / получать огромное количество данных на / с сервера. Что-то похожее на набор строк для данного события на стороне клиента.

Другой вопрос: Использование VPS - хорошая идея? Я, очевидно, не хочу платить за полностью выделенный сервер (slicehost предлагает VPS от ~ 20 долларов в месяц), и я предполагаю, что VPS сможет удовлетворить требования нескольких начальных клиентов. Поскольку все больше и больше пользователей начинают взаимодействовать с моим сервером, я предполагаю, что появится возможность перейти на все более крупные «сегменты» и, возможно, в конечном итоге перейти на полностью выделенный сервер, если это необходимо.

Спасибо за совет! :)

13
задан Casey Flynn 17 March 2011 в 03:52
поделиться