`
hacker_zxf
  • 浏览: 143825 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
阅读更多

关于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协议的C#源代码

    Hessian协议是http://caucho.com/公司开发的一种实用的web服务技术,它采用二进制数据,传输效率比较高,简单易用,是C#.NET/IIS环境快速开发web服务应用的一种解决方案。本资源中包含Hessian协议的C#版源代码,由于...

    Hessian协议格式

    Hessian协议报文格式总结,详细解释了hesssian请求报文格式和应答报文格式,并举例说明应答报文每个字节的含义。

    dubbo-hessian协议http请求demo(java)

    dubbo-hessian协议http请求demo

    用Hessian协议实现Android手机与J2EE系统集成的研究.pdf

    用Hessian协议实现Android手机与J2EE系统集成的研究.pdf

    hessian协议中文版1

    Hessian 2.0序列化协议规范 翻译: Edison peng 目录 1.概述 4 2.设计

    基于java的Hessian实现

    基于java实现hessian进行服务器之间数据交互demo项目 实现功能: 1.基于spring 2.5.6+hessian3.1.6带有签名安全机制 2.基于servlet代理机制实现HessianServlet,进行简单IP地址校验功能!

    HessianCSharp

    Hessian协议的优点在于:它采用二进制编码,因此传输数据量比SOAP协议要小得多。实践证明,传输同样的对象,Hessian协议传输的数据量比SOAP协议低一个数量级。因此在复杂网络环境下的分布式应用使用Hessian协议可以...

    Hessian 2.0序列化协议规范.docx

    Hessian 2.0序列化协议规范

    java,apache dubbo rest和hessian协议例子

    需要安装zookeeper,默认端口,即可。 provider:运行RestProvider的main方法即可。 consumer:运行RestConsumer的main方法,在控制台,回车即可发一笔请求。

    Hessian的使用配置步骤

    远程方法调用的比较,Hessian方法的介绍和相关配置.Hessian是一个轻量级的remoting on http工具,采用的是Binary RPC协议,所以它很适合于发送二进制数据,同时又具有防火墙穿透能力。Hessian一般是通过Web应用来提供...

    qhessian:hessian 协议的 Qt && C++ 实现

    hessian 协议的 Qt && C++ 实现 QHessian 基于 Qt 框架。 这意味着您只需要 qt 框架即可使用 hessian 的所有功能。 无需生成代码即可使用 qhessian。 C++ 实现的比较: 项目 代码生成 图书馆 是的 卷曲 不 SSLPP ...

    hessian源码修改,包含了协议的修改

    公司搞soa治理,正好采用hessian的export暴露接口,我修改了下,客户端不需要采用url,直接采用servicename,从zookeeper取地址列表。客户端和服务端通过mina通讯,不采用原生的http协议。目前mina的编码解码还有待...

    spring 集成 hessian例子

    Hessian是一个轻量级的remoting onhttp工具,使用...采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。参考文档地址为:http://blog.csdn.net/likunwen_001/article/details/78119765

    struts2+ibatis+spring+Hessian 整合项目

    struts2+ibatis+spring+Hessian 整合项目 web项目整合,服务端用hessian协议远程调用服务端的方法,hessian是用spring代理整合,struts2+ibatis+spring的整合项目,用作学习和开发基础平台构建很有用处,工程导入...

    hessian接口性能测试

    用LR对hessian接口做性能测试,使用JAVA协议,没有界面的性能测试

    Dubbo + SpringMVC 4.3.1 + Hessian 注解方式Demo工程源码

    整合 Dubbo + SpringMvc 4.3.1 的服务器maven工程样例,使用注解方式定义服务及IOC装配,采用Hessian协议传输 三个工程,在 cnetAdmin 和 cnetBlu 中,要引用 cnetCommon 工程。

    hessian 实例

    远程调用方法就是HttpInvoker:他也是将参数和返回值通过Java的序列化机制进行编组和反编组,它具有RMI的支持所有可序列化对象的...试使用Http协议传输二进制流的,同时又具有Hessian、Burlap(传输xml文本)的优点。

    Hessian-3.2.1.jar和源码

    Hessian是一个轻量级的remotingonhttp工具,使用简单的方法提供了RMI的功能。相比Webservice,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合发送二进制数据。

    hessian3.1

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

    hessian-4.0.37-src.jar

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

Global site tag (gtag.js) - Google Analytics