9

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

我正在考虑使用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 服务只是作为创建新实现的参考,但我也不太清楚。

3) 使用 PHP 实现支持 Hessian 的服务器怎么样?您需要使用 Caucho 服务器,还是可以在 Fedora Core 上用 PHP 实现服务器并使用 Java 客户端连接?

4

2 回答 2

9

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

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

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

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

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

于 2009-06-08T21:24:14.537 回答
2

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

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

如果速度是首要因素,我可能最终会使用Protocol Buffers

于 2008-10-08T19:57:15.630 回答