我有一个新的项目,需要一个良好的二进制协议。
我在考虑使用Hessian,除非有人有更好的主意。
我正在通读他们的一些文档,但并不像我想象的那么简单,所以我有几个快速的问题。
主页有一个标题为"Documentation“的部分,其中包含以下文档:
* 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, RMI1)这两者有什么区别?我假设1.0.1以后会变成2.0,并且现在使用2.0是正确的,但是我不确定。
2)您是否希望有人使用2.0序列化或2.0 web服务?看起来web服务只是用来创建新实现的引用,但这对我来说也不是完全清楚。
3)如何使用PHP实现一个支持Hessian的服务器。您是否需要使用Caucho服务器,或者是否可以在Fedora Core上使用PHP实现服务器并使用Java客户端进行连接?
发布于 2009-06-08 21:24:15
是的,Hessian 2.0就是用到的。协议规定了数据结构是如何表示二进制的,规范很简单。
Hessian web服务建立在Hessian协议上,它以Hessian格式指定多个报头来描述例如Hessian协议中的请求/响应格式。它定义了请求的内容、应该调用的方法等等。它并不是严格需要的,因为没有人使用它。您可以通过创建最适合您的"Request“类和"Response”类来定义它,并使用Hessian协议对其进行序列化。
Hessian是Java序列化的替代方案,它的速度较慢,因为java VM不直接支持它,但它(!)比XML解析更快。它可以以跨平台的方式使用,尽管你必须调整现有的实现来使它们协同工作,但规范已经在这里和那里发生了变化(例如,长度规范),所以实现往往不同。另一方面,它不是人类可读的,你总是需要一个工具来将黑森语转换为文本。
我在一个大型企业应用程序中使用了Hessian,在该应用程序中,Java富客户端与后端进行通信,以便使客户端JVM版本独立于服务器JVM版本。它就像一个护身符一样起作用。
请看一下实现Hessian4J。它是开源的,所以你可以完全控制它。
发布于 2008-10-08 19:57:16
我过去没有使用过Hessian,将来也不打算使用它,我的理由是:
对于web服务,我会非常努力地将其保持在普通的旧式XML中。如果我选择二进制XML表示,我可能会使用Fast Infoset -这是一个标准,并且很可能被更多的web服务客户端API/库/框架所支持。我知道CXF的人在他们的邮件列表上谈到了快速信息集,应该支持它,即使他们没有在他们的维基上记录这一点。
如果速度是最重要的,我可能最终会使用Protocol Buffers。
https://stackoverflow.com/questions/184199
复制相似问题