关于Hessian协议
有个同行问了这个问题,问题请参见下面链接
http://www.3atesting.com/bbs/vie ... &extra=page%3D1程序登陆和我们常用的http协议相似,都是通过网页进行操作!但是实际上他的应用是采用Hessian协议进行交互!所以看到
脚本中很多都是二进制代码!那么什么是Hessian协议呢
目前,Web服务技术是解决异构平台系统的集成及互操作问题的主流技术[1]。它所基于的XML已经是Internet上交换数据的实际标准,基于通用的进程间通信协议和网络传输协议屏蔽平台的差异,可以将各种异构环境下的通信及调用请求均统一为标准的Web服务格式[3]。
但是由于SOAP协议的结构问题会使封装的数据膨胀数倍。当传输数据量比较小时,问题不是那么明显,但是当进行大数据量传输时就会导致Web服务的传输性能在实际运用中降低了很多。这对于经常有大数据量数据交换的应用系统来说是不适用的。
Caucho Technology公司制定的HBWSP(Hessian Binary Web Service Protocol)[2]在这方面的有所突破。Hessian协议和
web service常用的SOAP协议类似,也是将协议报文封装在HTTP封包中,通过HTTP信道进行传输的。因此Hessian协议具有与SOAP协议同样的优点,即传输不受防火墙的限制(防火墙通常不限制HTTP信道)。Hessian协议的优势在于:它把本地格式的数据编码为二进制数据,仅用一个字符作为结构化标记,HBWSP封装后的数据增量明显小于SOAP封装后的数据增量。并且相对于SOAP,Hessian协议的外部数据表示有3个显著的优势:
1)采用简单的结构化标记。简单的结构化标记减少了编码、解码操作对内存的占用量。编码时,只需写少量的数据,就可以标记结构;解码时,只需读少量的数据就可以确定结构。而且,简单的结构化标记减少了编码后的数据增量。
2)采用定长的字节记录值。用定长的字节记录值,解码时,就可以使用位操作从固定长度的位获得值。这样不仅操作简单,而且可以获得较高的性能。
3)采用引用取代重复遇到的对象。使用引用取代重复遇到的对象可以避免对重复对象的编码,而且也减少了编码后的数据量。
因此使用Hessian协议传输数据量比SOAP协议要小得多。实践证明,传输同样的对象Hessian协议传输的数据量比SOAP协议低一个数量级。因此Hessian协议比SOAP协议更适用于分布式应用系统间大数据量的数据交换。
4.2 Hessian协议的实现构架
Hessian协议的实现构架如图3所示:为了实现Hessian 构架,设计了下列组件:编码组件、解码组件、通信组件、报告故障组件、代理组件、调用服务过程组件。
图3 Hessian协议的实现构架
首先客户端发出本地请求,代理组件响应请求依据服务接口,生成客户端存根,并调用编码组件对本地请求进行基于Hessian Binary Web Service Protocol标准的二进制编码。然后调用通信组件将请求发送给服务器端。服务器端通信组件接收到请求后把请求转发给调用服务过程组件,调用服务过程组件会首先调用解码组件,得到过程标识,将过程标识转给服务器端存根,并依据部署文件和客户端的请求加载服务过程的实现类。然后根据过程标识、过程参数调用服务过程。最后调用编码组件将响应结果进行编码并通过通信组件返回给客户端。
当数据传输、通信发生错误的时候就需要启用报告故障组件,它可以以异常的形式,报告发送端、接收端、或者网络连接发生的故障,并把错误记录以日志的方式记录下来保存在文件中,以备日后查阅。
4.3 实现结构
针对教务管理系统互联网传输存在的一系列问题,基于互联网的主体数据平台采用基于HBWSP的轻量级跨平台通信技术实现数据交换,如图4所示。在客户端,应用服务器从主题数据服务层中抽取数据,并按着HBWSP的外部数据表示对本地格式数据进行编码。然后通过internet网进行传输,在服务器端,数据交换的服务负责按照HBWSP的外部数据表示对接收到的数据进行解码,然后再对数据进行分析、处理后把数据插入到服务器端的主题数据服务层中。
图4非持久同步方式的数据交换解决方案
该解决方案的主要特点包括:
1)采用了HBWSP的二进制编码方式解决了异地、异构平台系统的通信问题,并使数据交互具有了一定的实时性。
2)由于HBWSP简洁的编码方式以及编码、解码性能高等特点使数据交换具有交换GB级数据的能力。
3)采用了HBWSP的二进制编码方式有助于缩短整个数据交换所需要的时间。其编码性能高的特点,有助于提高编码速度,减少发送方编码本地数据的时间。其解码性能高的特点,可以减少接收方解码、重构本地数据的时间。从而减少了数据交换的响应时间。
4)采用了HBWSP的二进制编码方式和数据分批传送技术有助于充分利用网络状况良好的时段。可以在网络状况良好的时段尽可能多的完成数据交换。
5)采用了断点续传技术,保证了当网络断连或响应超时导致正在进行的数据交换被中断,在故障修复后仍然可以从中断处开始,继续完成上次没有完成的数据交换的能力。断点的粒度可以调节,可以是一条数据,也可以是多条数据。
6)采用了事务保护机制,把每批要传输的数据定义为一个事务,本批要传输的数据的事务完整性不依赖于已经完成的各批数据,本批数据传输发生错误也不会对已经完成的各批数据造成影响。采用这种方法,可以在数据交换过程被中断的情况下保证数据交换事务的完整性。
分享到:
相关推荐
首先,我们需要理解Hessian协议的基本原理。Hessian是一种高效的序列化协议,它将Java对象转换为二进制流,通过网络传输,然后在另一端还原为原来的对象。相比基于文本的XML或JSON,Hessian传输的数据量更小,性能更...
Hessian 协议格式 Hessian 协议是一种轻量级的 remoting on http 工具,使用简单的方法提供了 RMI 的功能。采用的是二进制 RPC 协议,所以它很适合于发送二进制数据。Hessian 主要用作面向对象的消息通信。 ...
Hessian协议是http://caucho.com/公司开发的一种实用的web服务技术,它采用二进制数据,传输效率比较高,简单易用,是C#.NET/IIS环境快速开发web服务应用的一种解决方案。本资源中包含Hessian协议的C#版源代码,由于...
标题 "自己写了个Hessian" 暗示了这是一个关于Hessian协议的个人实现项目,而描述中的"博文链接"提供了更多深入理解该主题的资源。Hessian是一种二进制的Remoting协议,由Caucho Technology开发,常用于分布式系统中...
【Hessian协议】Hessian是一种轻量级的二进制Web服务协议,由Cauchy公司设计,专注于提高工程实用性。相比SOAP协议,Hessian更紧凑、高效,减少了数据在网络中的传输体积,避免了XML数据格式导致的数据膨胀问题。...
3. **Python中的Hessian**:Python也有对应的Hessian库,如`pyhessian`,它实现了Hessian协议,使得Python应用能够与Java Hessian服务进行通信。同样,服务端可以通过定义Python函数并包装为Hessian服务,客户端则...
Hessian 2.0 序列化协议是用于在网络间高效传输对象的一种二进制协议。它是由Caucho Technology开发的,主要用于远程方法调用(RMI)和Web服务。Hessian的目标是提供一种轻量级、快速且易于实现的序列化格式,使得...
3. **流式传输**:Hessian协议允许数据分块传输,这意味着服务端可以立即响应部分结果,而无需等待整个响应完成。 4. **自动类型转换**:在客户端和服务端之间,Hessian会自动处理类型转换,使得跨语言调用变得更加...
Hessian协议的核心特点包括: 1. **二进制格式**:Hessian使用紧凑的二进制格式,相比基于文本的协议如XML-RPC或SOAP,数据传输量更小,解析速度更快。 2. **动态类型**:Hessian支持动态类型,这意味着服务端和...
hessian-4.0.33.jar是Hessian框架的一个版本,包含了实现Hessian协议的类库,用于创建和解析Hessian二进制流。它主要包括以下组件: 1. Hessian编解码器:提供对Hessian二进制格式的编码和解码,将Java对象转化为可...
HessianServer指的是实现Hessian协议的服务端程序,通常用于构建分布式系统,使得不同的应用可以跨网络进行无缝通信。下面将详细介绍Hessian服务端的相关知识点。 1. **Hessian协议**: Hessian是Adobe公司开发的...
`hessian-4.0.7.jar`是Hessian的运行时库,包含了实现Hessian协议的各种类和接口。这个jar文件可以被Java应用程序引入,以便在客户端和服务端之间进行Hessian协议的通信。它包括了序列化和反序列化机制,以及对HTTP...
首先,Hessian协议由Caucho Technology开发,它是一种轻量级的、高效的二进制序列化格式。这种协议的优点在于,它可以将数据序列化为紧凑的字节流,减少了网络传输的数据量,从而提高了远程调用的性能。Hessian支持...
Hessian是一种轻量级的二进制远程过程调用(RPC)协议,它基于HTTP,并且通常通过Servlet来暴露Web服务。Hessian的设计目标是为了提供高效、简单的远程调用方式,使得客户端能够像调用本地方法一样调用远程服务。 *...
总的来说,"hessian服务端 客户端 可运行"的压缩包提供了一个方便的平台,让开发者能够快速了解和测试Hessian协议的工作原理。通过这个示例,你可以深入理解如何在Java环境中搭建和使用Hessian服务,以及如何在...
标题中的“HessianCSharp_Test.rar_Hessian java”暗示了这是一个关于使用C#(.Net)通过Hessian协议与Java进行交互的示例或测试项目。Hessian是一种二进制的Remoting协议,旨在提高远程过程调用(RPC)的效率,它...
Hessian协议定义了一套规则,用于表示各种数据类型,包括基本类型、字符串、日期、集合和自定义对象。这样,客户端通过网络发送一个Hessian序列化的请求,服务端接收后反序列化为本地对象,然后执行相应的操作,再...
基于java实现hessian进行服务器之间数据交互demo项目 实现功能: 1.基于spring 2.5.6+hessian3.1.6带有签名安全机制 2.基于servlet代理机制实现HessianServlet,进行简单IP地址校验功能!
标题提及的“Hessian实例下载”意味着这个压缩包包含了使用Hessian协议的示例代码和必要的库文件,方便开发者快速理解和学习如何在自己的项目中集成Hessian。描述中提到的网站地址是Hessian的官方主页,该页面提供了...
4. **序列化与反序列化**:Hessian协议处理数据的序列化和反序列化,允许Java对象和基本数据类型在客户端和服务器之间无缝传递。这意味着开发者无需手动处理JSON或XML等数据格式的转换。 5. **安全考虑**:由于...