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