注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

C#下Hessian接口使用  

2016-02-25 14:19:03|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Hessian是个轻量级的数据接口通讯框架,跟WebService、Json类似,不过它是以二进制格式传送,使用非常简单,支持.Net和Java多种开发语言,这里我以.NET(C#)为例来说它的服务接口定义和客户端的调用。

服务接口定义

引用hessiancsharp.dll类库,定义好接口和Hessian实现类,同时继承自CHessianHandler接口(实现了IHttpHandler),代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using hessiancsharp.server;

namespace loushang.ws
{

/// <summary>
/// Hessian定义的服务接口类
/// </summary>
public interface ICaUpdateService
{

string updateUserCaInfo(string args0, string args1);

}

/// <summary>
/// Hessian服务接口类
/// </summary>
public class CaUpdateServiceHessian : CHessianHandler, ICaUpdateService
{



#region ICaUpdateService 成员

public string updateUserCaInfo(string args0, string args1)
{
return "Hessian" + args0;
}

#endregion

}



}

服务端网站配置

增加Web.Config文件配置httpHandlers,增加Hessian的请求处理。同时还必须在IIS网站中的应用程序设置中配置通配符应用程序映射,将*.hessian的请求交给aspnet_isapi.dll处理,不要勾选确认文件是否存在。

<?xml version="1.0"?>
<configuration>

<system.web>

<httpHandlers>
<add verb="*" path="*.hessian" type="loushang.ws.CaUpdateServiceHessian, loushang.ws" />
</httpHandlers>
</system.web>

<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>

客户端接口调用

客户端定义和服务器的一样接口,通过CHessianProxyFactory创建Hessian的URL请求,以接口形式返回,然后通过接口就可以像调用本地代码使用了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using hessiancsharp.client;

namespace WebTransApp.DataControl
{

/// <summary>
/// 服务接口类
/// </summary>
public interface ICaUpdateService
{

string updateUserCaInfo(string args0, string args1);

}

/// <summary>
/// 服务接口实现工厂类
/// </summary>
public class CaUpdateServiceFactory
{
public static ICaUpdateService Create()
{
return new CaUpdateServiceService();
}
}


/// <summary>
/// 使用WebService的服务接口调用
/// </summary>
public class CaUpdateServiceService : ICaUpdateService
{

#region ICaUpdateService 成员

public string updateUserCaInfo(string xml, string args1)
{
Service.CACAPortType caPort = new Service.CACAPortTypeClient("ICaUpdateServiceHttpSoap11Endpoint");
Service.updateUserCaInfoRequest request = new Service.updateUserCaInfoRequest(xml, string.Empty);
Service.updateUserCaInfoResponse reponse = caPort.updateUserCaInfo(request);
string reStr = reponse.@return;
return reStr;
}

#endregion

}


/// <summary>
/// Hessian方式实现服务接口调用
/// </summary>
public class CaUpdateServiceHessian : ICaUpdateService
{


#region ICaUpdateService 成员

public string updateUserCaInfo(string args0, string args1)
{
string url = "http://localhost:36955/CaUpdateServiceHessian.hessian";

string hessianURL = System.Configuration.ConfigurationSettings.AppSettings["HessianURL"];
if (!string.IsNullOrEmpty(hessianURL)) url = hessianURL;

CHessianProxyFactory factory = new CHessianProxyFactory();
ICaUpdateService service = (ICaUpdateService)factory.Create(typeof(ICaUpdateService), url);
string reStr = service.updateUserCaInfo(args0, args1);
return reStr;
}

#endregion

}
}
  评论这张
 
阅读(198)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017