什么是Hessian?

Hessian是Caucho开发的一种二进制Web Service协议。支持目前所有流行的开发平台。

Hessia能干什么?

hessian用来实现web服务。

Hessia有什么优点?

Hessian协议和web service常用的SOAP协议类似,也是将协议报文封装在HTTP封包中,通过HTTP信道传输的。因此Hessian协议具有与SOAP协议同样的优点,即传输不受防火墙的限制(防火墙通常不限制HTTP信道)。Hessian协议的优点在于:它采用二进制编码,因此传输数据量比SOAP协议要小得多。实践证明,传输同样的对象,Hessian协议传输的数据量比SOAP协议低一个数量级。因此在复杂网络环境下的分布式应用使用Hessian协议可以获得更好的性能和可靠性。

Hessian怎么使用?

Hessian使用非常简单,首先去Hessian官方网站下载http://hessian.caucho.com/ ,Hessian支持目前流行的所有开发语言,选择NET C#版本下载。hessian是开源项目,他们的开源实现采用Apache许可。下载完后我们首先来建立服务器端:

新建一个VS的Web项目,删除默认的.aspx文件。引用Hessiancsharp.dll,新建一个接口IService.cs代码如下:

 1using System;
 2using System.Collections;
 3
 4namespace HessianService
 5{
 6    public interface IService
 7    {
 8        string Hello(string name);
 9    }
10}

就一个方法Hello没什么可说的。接下来我们实现这个接口Service.cs:

 1using System;
 2using System.Collections;
 3using hessiancsharp.server;
 4
 5namespace HessianService
 6{
 7    public class Service:CHessianHandler, IService
 8    {
 9
10        #region IService 成员
11
12        public string Hello(string name)
13        {
14            return "Hello " + name;
15        }
16
17        #endregion
18    }
19}

注意服务实现要继承CHessianHandler这个类,这个类继承实现了IHttpHandler。

OK,代码已经写完了够简单吧?不过现在这个服务还不能向外提供服务,我们还要对它进行一下小小的配置。

打开Web.config 在<System.web>中添加如下代码:

<webServices>
            <protocols>
                <remove name="HttpPost"/>
                <remove name="HttpGet"/>
            </protocols>
        </webServices>
        <httpHandlers>
            <add verb="*" path="*.hessian" type="HessianService.Service, HessianWebService" />
        </httpHandlers>

主要是配置IHttpHandler 很简单我就不罗嗦了。

OK 到此为之我们服务器端大功告成!

下边开始客户端:

新建控制台项目Client,将刚才服务器端的接口IService拷贝过来。

修改Program.cs:

 1using System;
 2using System.Collections;
 3using hessiancsharp.client;
 4using HessianService;
 5
 6namespace Client
 7{
 8    class ClientMain
 9    {
10        [STAThread]
11        static void Main(string[] args)
12        {
13            CHessianProxyFactory factory = new   CHessianProxyFactory("userName","password");                        
14            string url = "http://localhost:36955/hessiantest.hessian";//修改为你的server端地址
15            IService test = (IService)factory.Create(typeof(IService), url);
16            string result= test.Hello("飞鱼");
17            Console.WriteLine(result);
18            Console.ReadLine();
19
20        }
21
22    }
23}
24

OK!客户端完成。

在客户端通过CHessianProxyFactory和IService来创建一个服务的代理。然后你就可以像用本地对象一样用它了。够简单吧?

运行服务器端,修改url为你的服务器端地址,运行客户端。不出意外你就可以看到"Hello 飞鱼"了。

通过我的试用Hessian确实不错,开发简单,调用也简单,效率也比Webservice提高了不少,具体我没有测试,感兴趣的朋友可以测一下。另外最大的特点是跨平台性很好,在一些返回实体的操作中,如果服务端和客户端不是一种平台也没有关系只要命名空间、属性名字一样就可以调用很方便。

网上关于HessianCSharp的资料很少倒是JAVA的很多,不过配置方面相差很远,我一开始也是在Google上狂搜了一个上午才弄到一点资料,共享出来希望有用到的朋友少走一些弯路。另外给大家一个关于HessianCSharp的论坛:http://www.hessiancsharp.org/forum/

代码下载地址:下载源码

补充:部署到IIS的时候需要主意IIS需要进行重写配置 在站点或虚拟目录下右键-->主目录--->配置 插入通配符"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" 去掉"确认文件是否存在选项"否则不能调用,点击确定就可以了

来源:http://www.cnblogs.com/lxsfg/archive/2008/08/27/1277777.html

Hessian(C#)介绍及使用说明的更多相关文章

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

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

  2. 开源代码:Http请求封装类库HttpLib介绍、使用说明

    今天介绍一个很好用的Http请求类库--Httplib.一直以来,我们都是为了一次web请求,单独写一段代码 有了这个类,我们就可以很方便的直接使用了. 项目介绍: http://www.suchso ...

  3. 文件同步工具BT Sync介绍和使用说明

    BT Sync介绍 BT 下载,相信大伙儿都知道的.今儿个要介绍的 BT Sync,跟 BT 下载一样,都是 BitTorrent 公司发明滴玩意儿,都是采用 P2P 协议来进行传输. 简而言之,BT ...

  4. VMware虚拟网卡介绍和使用说明

    介绍VMware三种网络连接模式的详细配置及规则 版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址: https://www.cnblogs.com/poterliu/p/9455391 ...

  5. hessian简单介绍

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

  6. 微博java SDK介绍及使用说明

    转自:作者:新浪微博 开放平台 @MUNTO_AKIRA http://open.weibo.com/blog/%E5%BE%AE%E5%8D%9Ajava-sdk%E4%BB%8B%E7%BB%8D ...

  7. ViewPager介绍和使用说明

    1   ViewPager实现的功能 和实际运行的效果图示意 ViewPager类提供了多界面切换的新效果.新效果有如下特征: [1] 当前显示一组界面中的其中一个界面. [2] 当用户通过左右滑动界 ...

  8. axios介绍与使用说明 axios中文文档

    本周在做一个使用vuejs的前端项目,访问后端服务使用axios库,这里对照官方文档,简单记录下,也方便大家参考. Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node ...

  9. ExtJs4.1目录结构介绍和使用说明[转]

    一.在做ExtJs开发之前首先要到网站上下载ExtJs的开发包,我用的最新版本是4.1.1.此版本相对于之前的版本目录结构发生了一些变化,没有了adapter目录, 目录结构如下 文件/文件夹名的作用 ...

随机推荐

  1. 在XP系统中自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同,导致抛出的异常不同

    然而,在XP系统中,系统自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同, 并没有这个 _except_handler4_common ,结果就出现了启动程序时,遇到 ...

  2. Java中如何创建进程(转)

    在Java中,可以通过两种方式来创建进程,总共涉及到5个主要的类. 第一种方式是通过Runtime.exec()方法来创建一个进程,第二种方法是通过ProcessBuilder的start方法来创建进 ...

  3. 支付宝APP支付Java回调具体步骤

    /** * 支付宝异步请求通知 * * @param request * @return */@RequestMapping(value = "async", method = R ...

  4. 【转】Xcode7真机调试iOS应用程序

    原文网址:http://i.cnblogs.com/EditPosts.aspx?opt=1 近日苹果发布的新的Xcode7带来了许多特性,比如:swift语言比以前运行更快.功能更强.代码具有更高的 ...

  5. HDFS Block Replica Placement实现原理

    1. 背景   Block Replica Placement——数据块复本存储策略,HDFS Namenode以此为依据选取数据块复本应存储至哪些HDFS Datanodes,策略的设计需要权衡以下 ...

  6. C#调用C++动态库(dll)

    在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用re ...

  7. Linux学习笔记3——Linux中常用系统管理命令

    stat 显示指定文件的相关信息,比ls命令显示内容更多 who 显示在线登录用户 hostname 显示主机名称 uname显示系统信息 top 显示当前系统中耗费资源最多的进程 ps 显示瞬间的进 ...

  8. [2013 ACM/ICPC Asia Regional Hangzhou Online J/1010]hdu 4747 Mex (线段树)

    题意: + ;];;;], seg[rt <<  | ]);)) * fa.setv;) * fa.setv;;], seg[rt <<  | ], r - l + );;,  ...

  9. UVa 11825 集合dp

    #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...

  10. 关于数据库一致改关闭下redo日志文件丢失的处理办法的总结

    数据库一致性关闭下redo日志文件丢失的处理办法(归档和非归档都行) 1. inactive log  在一致性关闭后删除重启时可以在mount下(不丢失数据) alter database clea ...