Hessian是什么
 
Hessian类似Web Service,是一种高效简洁的远程调用框架。
Hessian的主页:http://hessian.caucho.com/
 
有关网上的对Hessian的评价很高,下面摘录了一段:
相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议(Binary),因为采用的是二进制协议,所以它很适合于发送二进制数据。Hessian通常通过Web应用来提供服务,因此非常类似于WebService。只是它不使用SOAP协议。

Hessian通过Servlet提供远程服务。需要将匹配某个模式的请求映射到Hessian服务。Spring的DispatcherServlet可以完成该功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务。Hessian的server端提供一个servlet基类, 用来处理发送的请求,而Hessian的这个远程过程调用,完全使用动态代理来实现的,,推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。

Hessian处理过程示意图:

客户端——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果

 
 
Hessian的有着不同语言的版本:Java、Flash、Python、C++、.NET C#、D、Erlang、PHP、Ruby,Delphi等等,以后也许会更多更多。
Java版的Hessian性能稍逊于RMI。Hessian最大的优势就是简单而且强大!
 
下面是我第一个Hessian应用的例子:
 
环境:
jdk1.5
hessian-4.0.1.jar
apache-tomcat-6.0.20.zip
 
下载地址
 
项目代码:
 
开发web应用:
Hessian与RMI机制类似,你需要先定义接口,通过接口规范服务,客户端也是用同样的接口来调用服务的。
package lavasoft.suths.service;

/** 
* 服务实现 

* @author leizhimin 2009-8-14 11:45:44 
*/ 
public class HelloService implements Hello { 
        public String sayHello(String name) { 
                return "Hello " + name + "!"; 
        } 
}

 
服务的具体实现
package lavasoft.suths.service;

/** 
* 服务实现 

* @author leizhimin 2009-8-14 11:45:44 
*/ 
public class HelloService implements Hello { 
        public String sayHello(String name) { 
                return "Hello " + "name" + "!"; 
        } 
}

 
配置web.xml,这个XML配置比较烦人,如果你有很多Service接口,你需要配置很多歌Servlet。但不用担心,Spring会为你解除烦恼。
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
                 version="2.5">

<servlet> 
                <servlet-name>hello</servlet-name> 
                <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> 
                <init-param> 
                        <param-name>home-class</param-name> 
                        <param-value>lavasoft.suths.service.HelloService</param-value> 
                </init-param> 
                <init-param> 
                        <param-name>home-api</param-name> 
                        <param-value>lavasoft.suths.service.Hello</param-value> 
                </init-param> 
                <load-on-startup>1</load-on-startup> 
        </servlet>

<servlet-mapping> 
                <servlet-name>hello</servlet-name> 
                <url-pattern>/hello</url-pattern> 
        </servlet-mapping> 
</web-app>

 
部署web应用,并启动tomcat。
 
 
写客户端代码:

客户端远程调用服务器端提供的接口,利用的就是Hessian的HessianProxyFactory,来实现远程代理。

package lavasoft.suths.service;

import com.caucho.hessian.client.HessianProxyFactory;

import java.net.MalformedURLException;

/** 
* 客户端调用(会依赖服务接口) 

* @author leizhimin 2009-8-14 11:52:33 
*/ 
public class Client { 
        public static void main(String[] args) throws MalformedURLException { 
                String url = "http://localhost:8080/hessianapp/hello"; 
                HessianProxyFactory factory = new HessianProxyFactory(); 
                Hello hello = (Hello) factory.create(Hello.class, url); 
                System.out.println(hello.sayHello("Hessian")); 
        } 
}

远程客户端调用,其实可以是本地,也可以是远程,这里写个简单的main方法测试一把。
 
 
从此可以看到,Hessian的伟大之处是:比WebService、RMI都简洁。

Hessian介绍的更多相关文章

  1. Hessian学习(springboot环境)

    Hessian介绍: Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议 ...

  2. Hessian学习总结(一)——Hessian入门

    一.远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . tcp . udp 等等, http . ...

  3. Hession实现远程通讯(基于Binary-RPC协议)

    一.开发工具 1.jdk1.6 64位 百度网盘地址:https://pan.baidu.com/s/1Zwqfmi20X4ANNswZzPMzXQ 提取码:k50r 2.apache-maven-3 ...

  4. (转)Hessian(C#)介绍及使用说明

    什么是Hessian? Hessian是Caucho开发的一种二进制Web Service协议.支持目前所有流行的开发平台. Hessia能干什么? hessian用来实现web服务. Hessia有 ...

  5. Hessian(C#)介绍及使用说明

    什么是Hessian? Hessian是Caucho开发的一种二进制Web Service协议.支持目前所有流行的开发平台. Hessia能干什么? hessian用来实现web服务. Hessia有 ...

  6. hessian简单介绍

    Hessian是基于HTTP的轻量级远程服务解决方案,Hessian像Rmi一样,使用二进制消息进行客户端和服务器端交互.但与其他二进制远程调用技术(例如Rmi)不同的是,它的二进制消息可以移植其他非 ...

  7. 十五分钟学会用Hessian

    了解Hessian Hessian是远程调用的一种技术,和WebService类似,但不同的是较WebService而言,它更轻量级,更简单,更快速.关于Hessian更详细全面的介绍可以查看http ...

  8. .Net下几个服务框架介绍

    简介 在公司的服务多了以后,为了调用上的方便,同时为了以后的服务治理,一般都会使用一些服务框架,这里主要介绍我知道的几个服务框架,简析一下这些服务框架的基本概念. 可投入生产环境使用的 以下两个服务框 ...

  9. java和c#使用hessian通信

    介绍 hessian主页:http://hessian.caucho.com/ 一个简单的例子学习hessian服务:服务端为Java,客户端为C#. 先要准备好C#和Java的第三方类库:http: ...

随机推荐

  1. easy ui datagrid 数据绑定

    1.前台页面 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  2. 一步步学习NHibernate(10)——连接查询和子查询(2)

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,老魏讲述了HQL的链接查询,本章呢,老魏开始讲述HQL的子查询.子查询在SQL中也是占据着非常重要的作用,如果没有 ...

  3. SRM 616 ColorfulCoins

    题意:给定一个从小到大的货币面值,每一个面额都是其前面面额的倍数(倍数大于等于2),每一种货币面值对应一种颜色,目前不清楚面值与颜色的对应关系.要求用最少的查询次数来确定面额与颜色的对应关系.(一次查 ...

  4. C# Windows - ListBox&CheckedListBox

    ListBox和CheckedListBox类的属性 属性 说明 SelectedIndex 这个值表明列表框中选中项的基于0的索引 ColumnWidth 在包含多个列的列表框中,这个属性指定列宽 ...

  5. 关于WinForm引用WPF窗体

    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...

  6. WPF性能优化经验总结

    WPF性能优化一.Rendering Tier 1. 根据硬件配置的不同,WPF采用不同的Rendering Tier做渲染.下列情况请特别注意,因为在这些情况下,即使是处于Rendering Tie ...

  7. What is the innovator’s solution——什么才是创新的解决方案2

    前略:http://www.cnblogs.com/Kassadin/p/4233497.html 案例1 从书上的一个案例开始: 让我们来看看AT&T公司(美国电话电报公司)的案例吧.198 ...

  8. [itint5]两数积全为1

    http://www.itint5.com/oj/#18 这一题,首先如果直接去算的话,很容易就超出int或者long的表示范围了.那么要利用%的性质,(num * 10 + 1) % a = 10 ...

  9. c/c++中一些高级函数的使用

    setvbuf 函数名: setvbuf 功 能: 把缓冲区与流相关 用 法: int setvbuf(FILE *stream, char *buf, int type, unsigned size ...

  10. Python字符串编码问题

    编码问题:Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了. ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节.字母A用ASC ...