无风无影

   ::  :: 新随笔  ::  ::  :: 管理

Thrift和HHessian

1、Thrift简介 

  

  1.Thrift是一种典型的CS(客户端/服务端)结构,客户端与服务端可以使用不同的语言开发。既然客户端和服务端能使用不同的语言开发,那么一定就要有一种之间语言来管理客户端和服务端的语言,这种语言就是IDL(Interface Description Language).

  2.Thrift不支持无符号类型,因为很多语言不存在无符号类型,比如Java

  3.集合中的元素可以是除了service之外的任何类型,包括exception

  thrift容器类型:

  (1)list:一系列由T类型的数据组成的有序列表,元素可以重复

  (2)set:一系列由T类型的数据组成的无序列表,元素不可重复

  (3)map:一个字典结构,key为K类型,value为V类型,相当于Java中的HashMap

  4.thrift定义服务相当于Java中创建Interface一样,关键字service

1.1 Thrift优点

  •   支持非常多的语言绑定
  •     thrift文件生成目标代码,简单易用
  •     消息定义文件支持注释
  •     数据结构与传输表现的分离,支持多种消息格式
  •     包含完整的客户端/服务端堆栈,可快速实现RPC
  •     支持同步和异步通信
1.2 Thrift劣势
Thrift适用于程序对程序静态的数据交换,需要先确定好他的数据结构,他是完全静态化的,当数据结构发生变化时,必须重新编辑IDL文件,代码生成,再编译载入的流程,跟其他IDL工具相比较可以视为是Thrift的弱项。
 

2、hessian简介

  hessian是一种高效简洁的远程调用框架,它采用的是二进制RPC协议(Binary),具有轻量、传输量小、平台无关的特点,特别适合于目前网络带宽比较小的手机网络应用项目。
        类似于WebService,不过不使用SOAP协议,而是用Binary RPC协议,相比webservice而言更简单、快捷。
        它把协议报文封装到http封包中,通过HTTP信道传输。Hessian是通过servlet提供远程服务,完全使用动态代理来实现的,推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。

 2.1.优点:

         (1)简单易用,面向接口,通过接口暴露服务,jar包只有200、300k,不需要配置防火墙
         (2)效率高,复杂对象序列化速度仅次于RMI,简单对象序列化优于RMI,二进制传输
         (3)多语言支持:wiki、Java、Flash/Flex、Python、C++、.NET C#、PHP、Ruby、Objective-C
         (4)可与spring集成,配置简单,使用HessianServiceExporter提供bean服务

 2.2.缺点:

          (1)缺乏安全机制,传输没有加密处理
          (2)异常机制不完善,总是报一些错误,错误原因也是千奇百怪,提示信息不足
          (3)事务处理欠缺
          (4)版本问题,spring 2.5.6对照3.1.3版,spring 3对照4.0及以上版本,需要使用spring MVC部分内容

posted on 2020-01-06 22:53  NWNS-无风无影  阅读(387)  评论(0)    收藏  举报