Hessian은 JSON보다 우수한 통신 프로토콜입니다. 바이너리 형식이므로 훨씬 더 간단하고 엄격한 형식 구문 분석은 훨씬 빠릅니다.
보너스로 이미 웹 서비스를 노출하는 Java, .NET 및 PHP 용 프레임 워크가 있습니다. 정말 쉽습니다. 이 C#을 인터페이스가 Asume :
public interface ITest {
public string getGreeting();
int addNumbers(int a, int b);
}
그런 HessianC#를 사용하여 서버에 스냅을한다 구현 :는 C# 인터페이스는 오브젝티브 C 프로토콜로 변환 할 필요가 아이폰 측면에서
public class CTest:CHessianHandler, ITest {
public string getGreeting() { return "Hello World!"; }
public int addNumbers(int a, int b) { return a + b; }
[STAThread]
private static void Main(string[] args) {
CWebServer web = new CWebServer(5667, "/test/test.hessian", typeof (CTest));
web.Paranoid = true;
web.AcceptClient("[\\d\\s]");
web.Run();
for (;;) {
if (Console.ReadLine() != "") {
web.Stop();
break;
}
}
}
}
을 :
@protocol ITest
-(NSString*)getGreeting;
-(int)addNumbers:(int)a :(int)b;
@end
그리고이 서비스에 대한 프록시를 얻기를 위해 HessianKit를 사용하는 것은 거의 간단하다
id<ITest> proxy = [CWHessianConnection proxyWithURL:serviceURL
protocol:@protocol(ITest)];
NSLog(@"Greeting: %@", [proxy getGreeting]);
NSLog(@"The answer: %d", [proxy addNumbers:40 :2]);
이 짧은 대답에서 메서드 이름은 C# -ish가 아니라 Obj-C-ish 중 하나입니다. 기본적으로 HessianKit은 Java의 명명 규칙을 사용하기 때문입니다. 메소드를 제공하고 이름 변환을 입력하여 HessianKit에서 재정의 할 수 있습니다. 그래서 C#과 Obj-C 양쪽의 연결은 가정에서 100 % 느껴집니다.예 :
[CWHessianArchiver setClassName:@"com.mycompany.ITest"
forProtocol:@protocol(CWTest)];
[CWHessianArchiver setMethodName:@"AddNumbers"
forSelector:@selector(addInt:toInt:)];
물론 주관적입니다. JSON은 지정된 이유 때문에 훌륭하지만, 심층적 인 계층 구조로 데이터가 구성되어 있다면 사용하는 것이 매우 어렵습니다. 사전에있는 사전 내의 계단식 배열과 비교하여 XPath로 XML 문서를 쿼리하는 것이 훨씬 쉽습니다. 연결된 라이브러리 중 하나를 사용하여 JSON 문자열을 변환 할 때 얻을 수있는 형식 구조 . 저는 모두 JSON 용이고 라이브러리라고 말하지만 때로는 XML이 사실 "더 좋습니다"라고합니다. –
잘 말하기를 모든 것이 장점과 단점이 있습니다. – slf