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:)];