Веб-сервис JSON отличается от SOAP, XML-RPC, REST? - PullRequest
0 голосов
/ 07 октября 2009

какой из них лучше всего подходит для приложения iphone? JSON отличается от этих трех методов веб-сервиса?

Не могли бы вы предложить мне ..

Ответы [ 4 ]

4 голосов
/ 07 октября 2009

JSON - это просто формат сериализации, тогда как SOAP и XML-RPC больше похожи на протоколы обмена запрос-ответ. Это в основном позволяет вам вызывать удаленные методы.

Другими словами, вы не можете реально сравнить их. Если вы создаете RESTful-приложения, сериализация в JSON (или просто старый XML, в этом отношении) должна быть просто в порядке. И, пожалуйста, за все хорошее, что есть в мире (это субъективно, воспалительные и аргументированный) не используют ни SOAP или WS- *, если это не абсолютно необходимому.

0 голосов
/ 07 октября 2009

Hessian - намного лучший протокол связи, чем XML и / или JSON. Будучи двоичным форматом, он еще более компактен, а при строгом разборе форматов намного быстрее. И он также потребляет намного меньше памяти. В качестве бонуса более простой парсер также означает, что ваше приложение более защищено.

В качестве бонуса уже есть платформы для Java, .NET и PHP для предоставления веб-службы. Действительно легко. Например, у вас есть этот интерфейс Java:

public interface Test {
  public String getGreeting();
  int addNumbers(int a, int b);
}

Затем реализовать его на сервере с помощью Hessian совсем несложно:

public class TestSevlet extends HessianServlet implements Test {
  public String getGreeting() { return "Hello World!"; }
  public int addNumbers(int a, int b) { return a + b; }
}

Сервер также может быть легко реализован, например, в .NET или PHP. Существует множество доступных реализаций гессиана.

На стороне iPhone интерфейс Java должен быть переведен в протокол Objective-C:

@protocol Test
-(NSString*)getGreeting;
-(int)addNumbers:(int)a :(int)b;
@end

А затем использовать [HessianKit] [2] для получения прокси для службы почти так же просто:

id<Test> proxy = [CWHessianConnection proxyWithURL:serviceURL
                                           protocol:@protocol(Test)];
NSLog(@"Greeting: %@", [proxy getGreeting]);
NSLog(@"The answer: %d", [proxy addNumbers:40 :2]);

В этом коротком ответе имена методов не совсем Obj-C-ish. Это потому, что по умолчанию HessianKit использует соглашения об именах Java. Это можно переопределить в HessianKit, предоставив метод и перевод имени типа. Так что обе стороны Java и Obj-C в соединении чувствуют себя на 100% как дома. Например:

[CWHessianArchiver setClassName:@"com.mycompany.Test" 
                    forProtocol:@protocol(CWTest)];
[CWHessianArchiver setMethodName:@"AddNumbers"
                     forSelector:@selector(addInt:toInt:)];
0 голосов
/ 07 октября 2009

JSON может быть одним из форматов, в который REST-запрос получает ответ.

JSON, который напрямую анализируется в браузерной среде, является лучшим форматом для взаимодействия в веб-приложении с высокой степенью интерактивности. REST - это способ определить умный запрос GET или POST к серверу, который может отвечать в различных форматах: xml, обычный текст, json.

Для веб-приложения или приложения для iPhone я бы пошел с ним.
Требуется меньше библиотек (или их вообще нет), которые хорошо работают с асинхронными http-запросами, имеют наименьшие накладные расходы и не требуют больших затрат, таких как SOAP и XML-RPC, для решения проблем, которые обычно не возникают у веб-приложений: строгая типизация, в основном.

0 голосов
/ 07 октября 2009

Соглашаясь с Антоном, JSON - это формат сериализации (например, XML или CSV). JSON обычно легче, чем XML, но есть некоторые структуры данных, которые не поддаются сериализации JSON.

Если вы используете интерфейс RESTful, вы можете, но не рекомендуется, переключаться между JSON и XML в зависимости от вызова службы. Я обнаружил, что использование XML для метода сериализации хорошо вписывается в iPhone SDK, поскольку он обеспечивает собственный анализ XML-потока в NSXMLParser.

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