Hessian学习之(一):简单测试 + C#调用Java服务

本文介绍了如何使用Hessian实现跨平台的Java和C#之间的RPC调用。首先,详细讲解了Java客户端调用Java服务的步骤,包括创建Dynamic Web Project、设置接口和实现类,并提供了成功的验证方法。接着,展示了C#客户端调用Java服务的实现,包括引入Hessiancsharp库和编写接口。最后,讨论了Java服务返回数据库查询结果给C#客户端的两种可能方案:模拟DataTable对象或使用ORM。
摘要由CSDN通过智能技术生成

开始调研Hessian和Mina,目的是希望能够建立一个简单的“高性能分布式服务调用框架”!类似于Dubbo或者淘宝的HSF那种,但是是要跨平台的,而不仅仅局限在Java领域。

hessian是一种远程调用的机制(RPC) ,类似于web service,不过它是使用自己的序列化协议(二进制序列化)。淘宝的HSF高性能服务框架中两台机器通信用到的序列化技术就是Hessian的,它的内部实现就是基于Hessian和Mina,这里是几篇关于Hessian源码解析的文章可以参考。

基于Hessian的远程调用协议。

  • 连接个数:多连接
  • 连接方式:短连接
  • 传输协议:HTTP
  • 传输方式:同步传输
  • 序列化:Hessian二进制序列化
  • 适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。
  • 适用场景:页面传输,文件传输,或与原生hessian服务互操作

约束:

  • 参数及返回值需实现Serializable接口
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hessian是一种轻量级的二进制RPC协议,它可以使得Java和其他语言之间的通信变得更加简单和高效。下面是一个简单Hessian服务端和客户端的例子: 服务端(Java): 1. 首先,需要在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId> <version>4.0.38</version> </dependency> ``` 2. 创建一个实现了Hessian服务接口的类,例如: ```java public class HelloServiceImpl implements HelloService { public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` 3. 在Spring配置文件中添加以下内容: ```xml <bean id="helloService" class="com.example.HelloServiceImpl"/> <bean id="hessianServiceExporter" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="helloService"/> <property name="serviceInterface" value="com.example.HelloService"/> </bean> ``` 4. 启动应用程序,服务端就可以监听来自客户端的请求了。 客户端(C#): 1. 首先,需要在项目中添加对HessianSharp.dll的引用。 2. 创建一个HessianProxyFactory对象,并使用它来创建一个HelloService接口的代理对象,例如: ```csharp HessianProxyFactory factory = new HessianProxyFactory(); HelloService service = (HelloService)factory.Create(typeof(HelloService), "http://localhost:8080/helloService"); ``` 3. 调用代理对象的方法,例如: ```csharp string result = service.sayHello("world"); Console.WriteLine(result); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值