SOAP, REST или просто XML для Objective-C / iPhone против серверного решения - PullRequest
4 голосов
/ 18 марта 2010

Мы собираемся создать решение, при котором iPhone запрашивает данные с сервера. У нас есть возможность решить, какое решение поставить на место, и мы не уверены, какой путь выбрать.

Что касается SOAP, я думаю, что у меня есть ответ, нет действительно стабильного решения для этого (я знаю, что есть решения, но я хочу что-то стабильное).

Как насчет отдыха?

Или лучше просто создать наш собственный XML? Это не будет таким сложным потоком Reguest / Response.

Заранее спасибо!

Ответы [ 6 ]

8 голосов
/ 20 марта 2010

Я создал приложение с открытым исходным кодом для iPhone OS 3.0, которое показывает, как использовать службы REST & SOAP в приложении iPhone, используя XML (используя 8 различных библиотек iPhone), SOAP, JSON (используя SBJSON и TouchJSON), YAML, Буферы протокола (формат сериализации Google) и даже CSV из примера приложения PHP (входит в проект).

http://github.com/akosma/iPhoneWebServicesClient

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

Следующая презентация в SlideShare показывает мои выводы с точки зрения производительности, простоты реализации и характеристик полезной нагрузки:

http://www.slideshare.net/akosma/web-services-3439269

В своих тестах я обнаружил, что Binary Plists + REST + JSON и XML + библиотека TBXML являются «лучшими» вариантами (что означает: простота реализации + скорость десериализации + самый низкий размер полезной нагрузки).

В проекте Github есть папка «Results» с таблицей Excel, в которой обобщены результаты (и со всеми необработанными данными). Вы также можете запустить тесты самостоятельно в 3G или Wi-Fi, а затем отправить результаты по почте себе для сравнения и изучения.

Надеюсь, это поможет!

7 голосов
/ 19 марта 2010

ОТДЫХ - путь. Существуют SOAP-решения, но, учитывая, что все люди в конечном итоге могут работать с SOAP, все равно могут быть использованы службы RESTful, поэтому нет необходимости в дополнительных затратах (вызовы SOAP обертывают XML для данных внутри XML-конверта, которые также должны быть проанализированы). 1001 *

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

Поскольку REST - это просто HTTP-вызовы, вы можете выбрать, какой метод передачи данных лучше всего соответствует вашим потребностям. Вы можете отправлять / получать XML, если хотите, хотя JSON легче анализировать и меньше для отправки. Списки списков рассылки являются еще одним популярным форматом, поскольку вы можете пересылать более богатые типы данных, и он немного более структурирован, чем JSON, хотя со стороны сервера обычно приходится искать библиотеки для его создания.

Многие люди используют JSON, но имейте в виду, что он очень разборчив в разборе - испортить символ в начале строки или случайно вставить строки без экранирования символов "" ", и могут возникнуть проблемы.

5 голосов
/ 19 марта 2010

Списки свойств XML (plist) также являются распространенным способом сериализации данных в Какао. Также легко создавать из других языков, и там есть несколько хороших библиотек.

3 голосов
/ 18 марта 2010

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

Если вы хотите минимизировать сетевой трафик, сохраняя при этом некоторые структурированные функции XML, вы можете взглянуть на JSON . Это очень легкая структура инкапсуляции данных. Для iPhone доступно несколько реализаций, например TouchJSON

Клаус

2 голосов
/ 18 марта 2010

Я бы пошел с простым HTTP. NSURLConnection в библиотеках Какао делают это довольно просто. В Google Toolbox для Mac также есть несколько классов, помогающих анализировать данные в кодировке URL.

0 голосов
/ 12 марта 2017

Я думаю, что очевидно, что REST - это новый король взаимодействия с серверами, вы обязательно должны использовать REST, вопросы должны быть о том, какую REST методологию вы должны использовать и какой язык кодирования, в моем посте Я представляю несколько очень простых реализаций для серверов REST на C #, PHP, Java и node.js.

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