2008-10-08 19 views
9

Tengo un nuevo proyecto que necesita un buen protocolo binario.Comenzando con Hessian

Estaba pensando en usar Hessian, a menos que alguien tenga mejores ideas.

Estaba leyendo parte de su documentación y no es tan sencillo como pensaba, así que tengo un par de preguntas rápidas.

La página de inicio tiene una sección titulada "documentación" que tiene los siguientes documentos:

* 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) ¿Cuál es la diferencia entre estos? Supongo que 1.0.1 más tarde se convierte en 2.0, y que es correcto usar 2.0 hoy, pero no estaba seguro.

2) ¿Esperaría que alguien usara la serialización 2.0 o el servicio web 2.0? Parece que se supone que el servicio web es solo una referencia para crear una nueva implementación, pero una vez más no está del todo claro para mí.

3) ¿Qué hay de la implementación de un servidor que admite Hessian utilizando PHP. ¿Necesita usar un servidor Caucho, o puede implementar el servidor en PHP en un Fedora Core y conectarse usando un cliente Java?

Respuesta

2

No he utilizado Hesse en el pasado y que no planea usar en el futuro tampoco, y mis argumentos son los siguientes:

Para un servicio web, me gustaría tratar muy duro para mantenerlo en su simple viejo XML. En caso de que elija una representación XML binaria, probablemente usaría Fast Infoset, que es un estándar y probablemente sea respaldado por un conjunto mucho mayor de API/bibliotecas/marcos de clientes del servicio web. Sé que la gente de CXF ha hablado sobre el infoset rápido en su lista de correo y debería ser compatible, aunque no haya documentado esto en su wiki.

Si la velocidad es lo principal, probablemente terminaría usando Protocol Buffers.

+1

El truco aquí es devolver XML del servidor de forma predeterminada, y si el cliente solicita Hessian, devuélvalo. –

+0

Si sería útil si pudiera explicar por qué no volvería a utilizar Hessian. – Vincent

+0

Usamos Hessian en nuestro software, y me gustaría que los desarrolladores anteriores no lo hicieran ya que ahora tenemos que acceder al punto final de hessia desde C++. Es un dolor y prefiero que todo esté en HTTP xml o json. – portoalet

9

Sí, Hessian 2.0 es el de usar. El protocolo especifica cómo se representa una estructura de datos binaria, la especificación es simple.

El servicio web de Hessian se basa en el protocolo de Hessian, especifica una serie de encabezados en el formato de Hessian para describir, p. el formato de solicitud/respuesta en el protocolo de Hessian. Define el contenido de la solicitud, el método que debe invocarse, etc. No es estrictamente necesario porque nadie lo usa. Puede definirlo usted mismo creando una clase de "Solicitud" y una clase de "Respuesta" que más le convenga y serializar esto usando el protocolo de Hessian.

Hessian es una alternativa para la serialización de Java, es más lenta porque no es directamente compatible con la máquina virtual de Java, pero es mucho (!) Más rápido que el análisis XML. Se puede usar de forma cruzada, aunque deberá modificar las implementaciones existentes para que funcionen juntas; la especificación ha cambiado aquí y allá (por ejemplo, especificaciones de longitud), de modo que las implementaciones tienden a diferir. La otra cara es que no es legible para el ser humano, siempre se necesita una herramienta para convertir el Hessian en texto.

He usado Hessian en una gran aplicación corporativa donde un cliente rico en Java se comunica con un back-end para hacer que la versión JVM del cliente sea independiente de la versión JVM del servidor. Y funcionó como un encanto.

Eche un vistazo a la implementación Hessian4J. Es de código abierto, por lo que puede tener un control total sobre él.

+0

Sitio web roto, enlace de SourceForge: https://sourceforge.net/projects/hessian4j.berlios/ – Wolf

+0

* puede tener control completo sobre él * - dentro de LGPLv2 – Wolf