Используйте XMPP вместо HTTP - PullRequest
       4

Используйте XMPP вместо HTTP

3 голосов
/ 28 декабря 2010

Мы с другом работаем над приложением для iPhone.Это приложение использует протокол XMPP для обеспечения функциональности чата.Сейчас мы разрабатываем архитектуру для приложения.

Так что мой друг работает над iPhone, а я - ruby ​​on rails guy.

Мой друг предложил, чтобы мы упаковывали каждый вызов, который обычно подается через HTTP, в XMPP.Итак, регистрация пользователей, поиск пользователей, редактирование профиля, загрузка фотографий, все идет через XMPP.Нет HTTP вообще.

Мой друг хочет использовать XMPP, потому что он говорит, что намного проще реализовать XMPP на стороне клиента, чем HTTP.Что касается меня, это фигня, но у нас есть владелец продукта, который давно работает с моим другом, и он доверяет ему.

Так что я пытаюсь убедитьМой друг и владелец продукта, который с помощью XMPP может найти то, что HTTP может работать, - это далеко не лучшая идея.

Я чувствую, что если мы все реализуем на XMPP, у нас будет боль в заднице до конца жизни.Но как мне доказать это?

PS Я не против чата по XMPP, я против поиска пользователей, загрузки фотографий, рейтинга, близлежащего поиска и различных других успокоительных запросов.

Пожалуйста,оставь ответ.Любая помощь приветствуется.

Небольшое обновление:

Вчера у нас было долгое обсуждение.И оказывается, что довольно сложно получить ответ от XMPP и HTTP в Objective-C.Потому что каждый отдельный объект и его данные должны храниться в модели Core Data, в то время как эта модель не может быть безопасно изменена из разных мест.Скажем, если вы используете транспорт HTTP, вы всегда хотите использовать только транспорт HTTP для обновления данных в вашей модели.И если вы используете XMPP, вы всегда должны использовать XMPP.Таким образом, вы не можете использовать оба.

Вот что сказал мне мой приятель по iPhone.Это звучит странно для меня, кто-нибудь может мне это объяснить?

Ответы [ 4 ]

2 голосов
/ 28 декабря 2010

Это ответ относительно ваших обновленных пунктов о невозможности обновления Базовых данных из разных источников ...

Это мне не совсем подходит.Я сделал много приложений Core Data с HTTP, JSON и XML (XMPP является подмножеством).Вот как выглядит шаблон для работы с Core Data:

1) Извлечение данных с сервера 2) Анализ с использованием любого необходимого анализатора (JSON, XML и т. Д.).3) Взять данные из результирующего разобранного словаря или массива, поместить в объект (ы) Core Data.4) Сохраните модель базовых данных.

В случае XMPP у вас может быть потоковый анализатор вместо получения всех данных перед анализом, но это не имеет значения.Существуют документированные способы использования различных контекстов для хранения данных в базовых данных из фонового потока, если это требуется.

По сути, подход состоит в том, чтобы разбить запросы к серверу на любые операции, необходимые для получения данных, и каждая из них может помещать данные в разные части модели.

Возможно, ему нужны некоторые данные изСторона HTTP, прежде чем он сможет воздействовать на данные XMPP?Если это так, он может просто сохранить частичные данные с обеих сторон, пока у него не будет достаточно, и пометить этот набор данных как завершенный для использования.

Нет такого сценария, в котором мне имеет смысл помещать что-либо, кроме трафика XMPP, в XMPP...

1 голос
/ 28 декабря 2010

XMPP сложнее реализовать на iPhone, чем прямая рассылка JSON.Легко добавить некоторые HTTP-вызовы и использовать JSON-ответ для обработки данных.Вот краткое руководство для вашего iPhone.

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

1 голос
/ 28 декабря 2010

Укажите, что он использует ASIHttpRequest для всех HTTP-вызовов, а затем спросите, где находится эквивалентная библиотека, которая сделает перенос данных в вызовах XMPP таким же простым ...

XMPP отлично подходит для того, для чего он был создан.: чатHTTP отлично подходит для того, что он делает - для связи с веб-сервером или веб-сервисом.Вы получаете веб-серверы, которые понимают разницу между POST и GET, вы получаете прокси-серверы, которые понимают, как оптимизировать HTTP-трафик, вы получаете автоматическое сжатие больших полезных нагрузок на стороне сервера, вы получаете звонки, которые можно анализировать в любом браузере, вы получаете множествотакие инструменты, как Charles , предназначенные для анализа HTTP-трафика, чтобы вы могли видеть, что вы отправляете.

И, конечно, HTTP имеет несколько видов аутентификации, встроенных в протокол, который библиотеки обрабатывают для вас, скореечем построение сломанной системы аутентификации поверх XMPP (и при первом создании любой системы аутентификации это будет некорректно).

0 голосов
/ 29 декабря 2010

Существуют некоторые определенные преимущества XMPP: простота реализации на стороне клиента, инфраструктура публикации-подписки (в большинстве случаев лучше, чем опрос Http), масштабируемость и расширяемость по конструкции, сообщество с открытым исходным кодом и т. Д.

OfКонечно, HTTP является более зрелым протоколом, чем XMPP / Jabber.С XMPP у вас могут возникнуть проблемы с настройками безопасности (блокировка портов и т. Д.), С HTTP будет гораздо проще работать.

Когда речь идет о реализации функциональности и бизнес-логики (ранжирование, поиск ...), вМир XMPP, вы должны создать несколько нестандартных реализаций модулей и / или модификаций существующих кодовых баз сервера.

Вы можете проверить XMPP через HTTP (через BOSH), чтобы использовать xmpp с протоколом http, используя двунаправленные потоки для серверов http.

В последнее время было запущено несколько веб-приложений, работающих по протоколу XMPP: chesspark (закрыто), drop.io.

Примечание: большинство серверов XMPP поддерживают современные механизмы аутентификации и типы шифрования (TLS).

XMPP - это зрелый, хорошо документированный и вполне способный протокол для многих вещей, но вы должны быть очень осторожны, чтобы выбрать его в качестве основной среды разработки для своего проекта.Вы должны потратить некоторое время, чтобы проверить, действительно ли он подходит для ваших нужд.Я рекомендую XMPP Book от O'Reilly в качестве справочного материала.

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