Советы по реализации сервера для структуры сервера / клиента Разработка iOS-приложений? - PullRequest
12 голосов
/ 06 декабря 2011

Должно быть много приложений, предназначенных для взаимодействия с сервером. Мой вопрос касается только приложения, установленного на устройстве iOS + взаимодействия со службой на стороне сервера. Я не говорю о веб-приложении, и в этом обсуждении вообще не должно быть веб-страницы. Типичными примерами являются приложения, такие как Instagram и Twitter, в которых большая часть информации, обмениваемой между приложением и сервером, представляет собой просто данные, такие как String, Image и Integer (заключенные в JSON или XML), презентация веб-страницы не требуется.

У меня такой вопрос: если вы независимый разработчик приложения и разрабатываете такое приложение с нуля без какого-либо существующего API веб-сайта, структуры базы данных или приложения (поэтому вы не ограничены каким-либо существующим API, структурой или приложением базы данных протокол), какой будет наиболее эффективный подход?

Что нужно сделать северной стороне:

  • получать данные, отправленные приложением;
  • обработать данные с помощью разработанной логики;
  • взаимодействовать с базой данных (например, MySQL);
  • выполнять необходимый анализ и анализ данных - это может быть постоянно работающая служба или одноразовая задача, запрошенная клиентом приложения;
  • отправлять данные обратно в приложение по запросу или спонтанно;
  • обмениваться или передавать данные между / между различными клиентами приложения (т. Е. Групповой чат и одноранговое сообщение);

Насколько мне известно, есть 3 очевидных варианта реализации на стороне сервера:

  • PHP
  • Python
  • Ruby on Rails

(пожалуйста, не стесняйтесь добавлять дополнительные параметры)

Мои вопросы:

  • какой вариант является наиболее подходящим для реализации на стороне сервера?
  • Если приложение уделяет большое внимание естественному человеческому языку / текстовому поиску, анализу и интеллектуальному анализу данных, какой из них является лучшим выбором? Я слышал, что Python довольно хорошо работает в этой области.
  • Какой-нибудь совет по выбору базы данных? Сейчас я использую MySQL, и я обнаружил, что он достаточно мощный для моих целей, я слышал, что Twitter переключается на Cassandra. Это будет слишком сложно для начала?
  • Для сервера, если вам нужно создать интерфейс управления сервером, для вас, как администратора, для управления и мониторинга сообщества, членства, данных и тому подобного, есть ли какое-либо существующее решение, или инфраструктура, или инструмент для этого? какой будет самый эффективный подход?
  • Если у нового программиста нет опыта работы с ними, с какого из них вы предлагаете начать?
  • Есть ли хороший справочный материал или пример кода на стороне сервера в таком контексте, из которого мы можем извлечь уроки?

Я знаю, что в Stackoverflow есть много очень опытных экспертов в этих областях, но я видел больше новичков, которые только вошли в область разработки iOS без особых знаний в области программирования серверов / баз данных. И я надеюсь, что этот поток может помочь тем, кто думает о разработке приложения со структурой сервер / клиент, но не знает, с чего начать.

ps: я буду постоянно обновлять эту ветку вопросов и добавлять свои выводы по этой теме, чтобы помочь всем остальным пользователям в stackoverflow. :-) Пожалуйста, постарайтесь сделать ваш ответ информативным, понятным и конструктивным. Я полагаю, что большинство читателей этой темы будут новыми членами этого замечательного сообщества.

Ответы [ 3 ]

4 голосов
/ 25 декабря 2012

Вы уверены, что хотите потратить время и деньги на разработку собственного сервера и разработку собственного API?Сегодня существует множество поставщиков mBaaS (мобильных Backend как услуг), таких как QuickBlox , Parse , StackMob , которые готовы к использованию, и у них есть отличные пользовательские объекты.API и некоторые из предопределенных модулей.У них отличные бесплатные планы с большой квотой.Некоторые из них, такие как QuickBlox, имеют план Enterprise - так что вы можете купить лицензию, и они будут использовать сервер обновлений для вашей цели.

Итак, я рекомендую не развивать свой сервер и думать о рынке mBaaS.

Как раз о вашей проблеме - я могу порекомендовать посмотреть Пример кода пользовательских объектов QuickBlox , а также API пользовательских объектов .Модуль пользовательских объектов предоставляет гибкость для определения любой структуры данных (схемы), которая вам нужна.Схема определяется в Панели администрирования.Схема называется Class и содержит имена полей и их тип.Я думаю, это то, что вам нужно.

1 голос
/ 06 декабря 2011
  • какой из них является наиболее подходящим для реализации на стороне сервера?

Ну, это зависит от того, что вы знаете, есть причина выбрать один издругое

  • Если приложение уделяет большое внимание естественному человеческому языку / текстовому поиску, анализу и интеллектуальному анализу данных, какой из них является лучшим выбором?Я слышал, что Python хорошо работает в этой области.

Это отразится на вашем первом вопросе, вы выбираете язык, который вам нужен.Таким образом, если python облегчает задачу, выберите этот.

  • Какой-нибудь совет относительно выбора базы данных?Сейчас я использую MySQL, и я обнаружил, что он достаточно мощный для моих целей, я слышал, что Twitter переключается на Cassandra.Это будет слишком сложно для начала?

Опять не тот вопрос, на который легко ответить, так как все это связано с требованиями.Но подойдет любой SQL-сервер.Сайт Cassandra предназначен для «масштабируемости и высокой доступности без ущерба для производительности».Как вы думаете, ваш веб-сервис будет получать много запросов, тогда это может быть выбор для рассмотрения.

  • Если вы хотите создать серверный интерфейс управления для сервера, вы, как администратор, можете управлять и контролировать сообщество, членство, данные и т. Д., Существует ли какое-либо существующее решение?или рамки или инструмент для этого?Какой будет наиболее эффективный подход?

На этот вопрос снова будет дан ответ, только когда вы выберете сервер SQL и язык сервера.

  • Если у нового программиста нет опыта работы с ними, с какого из них вы предлагаете начать?

Начните с чего-то попроще, вы действительно выходите из этого.

  • Есть ли какой-либо хороший справочный материал или пример кода на стороне сервера в таком контексте, из которого мы можем поучиться?

Возможно, есть некоторые, но вам действительно стоит начать с малого и работать оттуда.


Twitter начинал как приложение Rub on Rails и работает над масштабируемостью и доступностью, что ruby ​​не очень хорошо (это мое мнение)).или посмотрите на Facebook, они написали компилятор php to c, чтобы заставить php работать быстрее.

Единственное, что я могу сказать, чтобы запустить код, когда ваше приложение взлетает, а затем решить некоторые проблемы с производительностью.

И поскольку вы заявляете, что вы новичок в программировании, не кусайтебольше, чем вы можете жевать.

0 голосов
/ 06 декабря 2011

Это огромный вопрос, и я не думаю, что есть лучший ответ. Это в большей степени зависит от того, что вас волнует, например, от того, насколько быстро идет процесс разработки, насколько легко внедрение и т. Д.

А какая из них популярная, какая крутая, я не думаю, что это имеет смысл.

По моему личному мнению, я хорошо разбираюсь в ASP.NET и могу легко получить сервер Windows, поэтому начну со службы ASP.NET, предоставляющей данные.

И, продолжение следует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...