Hessian入门

时间:2008-10-08 18:35:15

标签: hessian

我有一个需要良好二进制协议的新项目。

我在考虑使用Hessian,除非有人有更好的想法。

我正在阅读他们的一些文档,并不像我想的那么简单,所以我有几个简单的问题。

主页有一个标题为“文档”的部分,其中包含以下文档:

* 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)这些有什么区别?我假设1.0.1之后变为2.0,今天使用2.0是正确的,但我不确定。

2)您是否希望有人使用2.0序列化或2.0 Web服务?看起来Web服务应该是创建新实现的参考,但对我来说并不完全清楚。

3)如何使用PHP实现支持Hessian的服务器。您是否需要使用Caucho服务器,或者您是否可以在Fedora Core上使用PHP实现服务器并使用Java客户端进行连接?

2 个答案:

答案 0 :(得分:9)

是的,Hessian 2.0是可以使用的。该协议规定了数据结构如何表示为二进制,规范很简单。

Hessian Web服务建立在Hessian协议之上,它​​以Hessian格式指定了许多标题,用于描述例如Hessian协议中的请求/响应格式。它定义了请求的内容,应该调用的方法等等。它并非严格需要,因为没有人使用它。您可以通过创建最适合您的“Request”类和“Response”类来自己定义,并使用Hessian协议对其进行序列化。

Hessian是Java序列化的替代方案,它速度较慢,因为java VM没有直接支持,但它比XML解析更快(!)。它可以以跨平台的方式使用,虽然您必须调整现有的实现以使它们一起工作,规范在这里和那里已经改变(例如长度规范),因此实现往往会有所不同。另一方面,它不是人类可读的,你总是需要一个工具将Hessian转换为文本。

我在一个大型企业应用程序中使用了Hessian,其中Java富客户端与后端进行通信,以使客户端JVM版本独立于服务器JVM版本。它就像一个魅力。

查看实施Hessian4J。它是开源的,因此您可以完全控制它。

答案 1 :(得分:2)

我过去没有使用过Hessian,也不打算将来使用它,我的论点是:

对于Web服务,我会非常努力地将它保存在普通的旧XML中。如果我选择二进制XML表示,我可能会使用Fast Infoset - 这是一个标准,很可能由更大的Web服务客户端API /库/框架集支持。我知道CXF人已经在他们的邮件列表上谈到了快速信息集,并且应该得到支持,即使他们没有在他们的维基上记录这一点。

如果速度是主要的,我可能最终会使用Protocol Buffers