2008-10-08 16 views
9

Ich habe ein neues Projekt, das ein gutes Binärprotokoll benötigt.Erste Schritte mit Hessian

Ich dachte an Hessian zu verwenden, es sei denn jemand hat bessere Ideen.

Ich habe einige ihrer Dokumente gelesen und es ist nicht so einfach wie ich dachte, also habe ich ein paar kurze Fragen.

Die Homepage hat einen Abschnitt mit dem Titel „Dokumentation“, die die folgenden Dokumente hat:

* Hessian Documentation 
* Hessian 1.0.1 spec 
* Hessian 2.0 Serialization Draft 
* Hessian 2.0 Web Service Draft 
* Taxonomy explaining Hessians relationship to CORBA, SOAP, RMI 

1) Was ist der Unterschied zwischen diesen beiden? Ich nehme an, dass 1.0.1 später 2.0 wird, und dass es richtig ist, 2.0 heute zu verwenden, aber ich war nicht sicher.

2) Würden Sie erwarten, dass jemand 2.0 Serialisierung oder 2.0 Web Service verwendet? Es sieht so aus, als ob der Webdienst nur eine Referenz für die Erstellung einer neuen Implementierung sein soll, aber es ist mir auch nicht völlig klar.

3) Was ist mit der Implementierung eines Servers, der Hessian mit PHP unterstützt. Benötigen Sie einen Caucho-Server oder können Sie den Server in PHP auf einem Fedora Core implementieren und mit einem Java-Client verbinden?

Antwort

2

Ich habe nicht Hessische in der Vergangenheit und ich plane nicht, es in der Zukunft entweder über die Verwendung und meine Argumente sind diese:

Für einen Web-Service, würde ich wirklich hart versuchen, es zu halten in einfaches altes XML. Für den Fall, dass ich eine binäre XML-Repräsentation wählen würde, würde ich wahrscheinlich Fast Infoset verwenden - was ein Standard ist und höchstwahrscheinlich von einem viel größeren Satz von Web-Service-Client-APIs/-Bibliotheken/-Frameworks unterstützt wird. Ich weiß, dass die CXF Leute über das schnelle Infoset auf ihrer Mailing-Liste gesprochen haben und es sollte unterstützt werden, obwohl sie das nicht in ihrem Wiki dokumentiert haben.

Wenn Geschwindigkeit die Hauptsache ist, würde ich wahrscheinlich am Ende Protocol Buffers verwenden.

+1

Der Trick hier ist, XML standardmäßig vom Server zurückzugeben, und wenn der Client nach Hessian fragt, geben Sie das zurück. –

+0

Wenn es nützlich wäre, wenn Sie erklären könnten, warum Sie Hessian nicht wieder verwenden würden. – Vincent

+0

Wir benutzen Hessian in unserer Software, und ich wünschte, die vorherigen Entwickler hätten das nicht getan, da wir jetzt auf den hessischen Endpunkt von C++ aus zugreifen müssen. Es ist ein Schmerz und ich bevorzuge Dinge in einfachen HTTP XML oder JSON. – portoalet

9

Ja, Hesse 2.0 ist zu verwenden. Das Protokoll gibt an, wie eine Datenstruktur binär repräsentiert wird, die Spezifikation ist einfach.

Der Hesse-Web-Service baut auf dem Hesse-Protokoll auf, spezifiziert eine Anzahl von Headern im Hesse-Format, um z.B. das Anfrage/Antwort-Format im Hessischen Protokoll. Es definiert den Inhalt der Anfrage, die Methode, die aufgerufen werden soll und so weiter. Es wird nicht unbedingt benötigt, weil niemand es benutzt. Sie können dies selbst definieren, indem Sie eine "Anfrage" -Klasse und eine "Antwort" -Klasse erstellen, die am besten zu Ihnen passt, und diese mit dem hessischen Protokoll serialisieren.

Hessian ist eine Alternative für Java-Serialisierung, es ist langsamer, weil nicht direkt von der Java-VM unterstützt, aber es ist viel (!) Schneller als XML-Parsing. Es kann plattformübergreifend verwendet werden, obwohl Sie bestehende Implementierungen optimieren müssen, damit sie zusammen funktionieren. Die Spezifikationen haben sich hier und da geändert (z. B. Längenangaben), sodass Implementierungen dazu neigen, sich zu unterscheiden. Die Kehrseite ist, dass es nicht vom Menschen lesbar ist, man braucht immer ein Werkzeug, um das Hessische in Text umzuwandeln.

Ich habe Hessian in einer großen Unternehmensanwendung verwendet, in der ein Java-Rich-Client mit einem Backend kommuniziert, um die Client-JVM-Version unabhängig von der Server-JVM-Version zu machen. Und es hat wie ein Zauber funktioniert.

Werfen Sie einen Blick auf die Implementierung Hessian4J. Es ist Open Source, so dass Sie die vollständige Kontrolle darüber haben können.

+0

Website defekt, SourceForge-Link: https://sourceforge.net/projects/hessian4j.berlios/ – Wolf

+0

* Sie können die vollständige Kontrolle über es * - innerhalb LGPLv2 – Wolf