编程语言
首页 > 编程语言> > Hessian(C#)介绍及使用说明 (转)

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

作者:互联网

原文链接:http://www.cnblogs.com/GaryFeng/archive/2010/04/20/1716226.html

什么是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代码如下:

 

 

ContractedBlock.gifExpandedBlockStart.gifCode
 1None.gifusing System;
 2None.gifusing System.Collections;
 3None.gif
 4None.gifnamespace HessianService
 5ExpandedBlockStart.gifContractedBlock.gifdot.gif{
 6InBlock.gif    public interface IService
 7ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 8InBlock.gif        string Hello(string name);
 9ExpandedSubBlockEnd.gif    }
10ExpandedBlockEnd.gif}

 

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

 

ContractedBlock.gifExpandedBlockStart.gifCode
 1None.gifusing System;
 2None.gifusing System.Collections;
 3None.gifusing hessiancsharp.server;
 4None.gif
 5None.gifnamespace HessianService
 6ExpandedBlockStart.gifContractedBlock.gifdot.gif{
 7InBlock.gif    public class Service:CHessianHandler, IService
 8ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 9InBlock.gif
10ContractedSubBlock.gifExpandedSubBlockStart.gif        IService 成员#region IService 成员
11InBlock.gif
12InBlock.gif        public string Hello(string name)
13ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
14InBlock.gif            return "Hello " + name;
15ExpandedSubBlockEnd.gif        }
16InBlock.gif
17ExpandedSubBlockEnd.gif        #endregion
18ExpandedSubBlockEnd.gif    }
19ExpandedBlockEnd.gif}

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

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

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

 

ContractedBlock.gifExpandedBlockStart.gifCode
<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:

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

 

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

转载于:https://www.cnblogs.com/GaryFeng/archive/2010/04/20/1716226.html

标签:IService,string,C#,System,介绍,Hello,Hessian,服务器端
来源: https://blog.csdn.net/weixin_30528371/article/details/95931545