Подтвердить что ты не робот

JSON или SOAP (XML)?

Я разрабатываю новое приложение для компании. Приложение должно обмениваться данными с iPhone и с iPhone.

На стороне сервера компании используется .NET framework.

Например: класс "Клиент" (имя, адрес и т.д.) для определенного номера CustomerNumber должен быть сначала загружен с сервера на iphone, сохранен локально, а затем загружен обратно, чтобы применить изменения (и сделать их доступными для других людей), Concurrency не должно быть проблемой (по крайней мере в это время...)

В любом случае мне приходится разрабатывать как серверную (webservice), так и iPhone-приложение.

Я свободен для определения наилучшего способа сделать это (это приложение "число ОДИН", поэтому оно станет "стандартом" для будущего).

Итак, что вы мне предлагаете?

Использовать веб-службы SOAP (разбор XML и т.д.) или пользовательский JSON? (кажется, легче...) Мне понятно, как "загружать" данные с помощью SOAP (очень долго, чтобы закодировать конверт soap xml... я бы избегал), но как я могу сделать то же самое с помощью JSON?

Приложению необходимо использовать значения даты (например: last_visit_date и т.д.), что о дате в Json?

4b9b3361

Ответ 1

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

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

Чтобы создать код с ним, вместо библиотеки XML вам понадобится библиотека JSON. Даты обрабатываются так же, как с XML - кодируют их по стандарту, а затем позволяют библиотеке распознавать их. (например, здесь библиотека с образцом с датами в нем)

Здесь праймер.

Ответ 2

А, большой вопрос: JSON или XML?

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

При прохождении небольших объектов данных, где единственные строки являются небольшими (идентификаторы, даты и т.д.), я хотел бы использовать JSON, поскольку он меньше, проще разбирать и читать более.

Также обратите внимание, что даже если вы выберете XML, это никоим образом не означает, что вам нужно использовать SOAP. SOAP - очень тяжелый протокол, предназначенный для взаимодействия между партнерами. Поскольку вы контролируете как клиент, так и сервер здесь, это не обязательно имеет смысл.

Ответ 3

Подумайте, как вы будете потреблять результаты на iPhone. Какой mechansim вы использовали бы для чтения ответа веб-службы? NSXMLParser?

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

Являются ли JSON и SOAP только вашими опциями? Как насчет сервисов RESTful?

Взгляните на некоторых крупных игроков в Интернете, которые имеют общедоступные API-интерфейсы, доступные для клиентов iPhone:

Twitter API API FriendFeed

Кроме того, просмотрите следующие связанные статьи:

Ответ 4

JSON имеет следующие преимущества:

  • он может кодировать логические и числовые значения... в XML все есть строка
  • у него гораздо более четкая семантика... в json у вас есть {"key":"someValue"}, в XML вы можете иметь <data><key>someValue</key></data> или <data key="someValue" />... любой XML node должен иметь имя... это не всегда имеют смысл... и дети могут либо представлять свойства объекта, либо дети, которые при многократном фактическом представлении массива... чтобы действительно понять структуру объекта XML-сообщения, вам нужна его соответствующая схема... в JSON, вам нужен только JSON...
  • меньше и, следовательно, использует меньшую пропускную способность и память во время разбора/генерации...

кроме этого, я вижу NO разницу между XML и JSON... я имею в виду, что это так взаимозаменяемо... вы можете использовать JSON для захвата семантики SOAP, если вы хотите... это просто, что SOAP настолько раздута... если вы хотите использовать SOAP, используйте для этого библиотеку и генераторы... это не интересно и не интересно создавать все это вручную...

с использованием XML RPC или JSON RPC должен работать быстрее... он более легкий, и вы используете JSON или XML по своему усмотрению... но при создании клиентских & серверных приложений очень важная вещь на моих глазах, чтобы абстрагировать транспортный уровень с обеих сторон... вся ваша бизнес-логика и т.д. ни в коем случае не должна зависеть от более чем крошечного интерфейса, когда дело доходит до общения, а затем вы можете подключать протоколы к вашему приложению, по мере необходимости...

Ответ 5

Вы также можете использовать Hessian, используя HessianKit на стороне iPhone, и HessianС# на стороне сервера.

Большие бонусы: 1. Гессиан в бинарном протоколе сериализации, поэтому меньшая полезность данных, хорошая для 3G и GSM. 2. Вам не нужно беспокоиться о формате в любом конце, транспорт автоматизирован с прокси.

Итак, на стороне сервера вы просто определяете интерфейс С#, например:

public interface IFruitService {
  int FruitCount();
  string GetFruit(int index);
}

Затем вы просто подклассифицируете CHessianHandler и реализуете IFruitService, и ваш веб-сервис будет выполнен.

На iPhone просто напишите соответствующий протокол Objective-C:

@protocol IFruitService
-(int)FruitCount;
-(NSString*)GetFruit:(int)index;
@end

Это может быть доступ через прокси с помощью одной строки кода:

id<IFruitService> fruitService = [CWHessianConnection proxyWithURL:serviceURL 
                                                          protocol:@protocol(IFruitService)];

Ссылки:

HessianKit: hessiankit

Ответ 6

Есть больше вариантов, чем просто SOAP против JSON. Вы можете сделать протокол на основе REST (Передача репрезентативного состояния) с использованием XML. Я думаю, что это проще использовать, чем SOAP, и вы получаете гораздо более приятный XSD (который вы разрабатываете). Довольно легко почти любому клиенту получить доступ к таким сервисам.

С другой стороны, синтаксические анализаторы JSON доступны практически для любого языка и позволяют легко вызвать JavaScript из JavaScript, если вы будете использовать их через AJAX.

Однако SOAP может быть довольно мощным с тоннами стандартизованных расширений, которые поддерживают функции предприятия.

Ответ 7

Я бы, конечно, пошел с JSON, как уже отмечали другие, - быстрее, а размер данных меньше. Вы также можете использовать структуру моделирования данных, такую ​​как JSONModel, для проверки структуры JSON и автоконвертировать объекты JSON в объекты Obj-C.

JSONModel также включает в себя классы для работы в сети и работы с API-интерфейсами - также включает методы json rpc.

Посмотрите на эти ссылки:

Краткий пример использования JSONModel: http://www.touch-code-magazine.com/how-to-make-a-youtube-app-using-mgbox-and-jsonmodel/

Надеюсь, что это полезно