自己动手开发【RPC框架】【山寨Hessian】

先声明一下

1、我承认是标题党
2、这不是在这重复讲轮子的故事,最近空闲中研读了一下hessian源码,只是在借助例子分析一下RPC原理,通过例子更容易理解一些,对于程序员来讲,源码就是最好的文档

    言归正传,分布式服务架构中,一个最基础的问题就是服务器之间的通信,java有很多实现远程通信的技术,如RMI、MINA、WebService、Hessian、PHPRPC(这名起的有点白痴)等
    具体原理描述不在本文范围内,但每个RPC技术都离不开这两点:传输的数据格式、传输协议,本文主要是通过具体实践来理解RPC原理,刚刚说到数据格式和传输协议,Hessian自己定义了一套二进制传输格式,本例子没有花费精力去定制一套格式,偷个懒捡个现成的json格式,将所有的请求、返回都转换成json格式,以字符串的形式与远程服务交互,与RPC-XML类似,以后哪天也试试二进制格式,呵呵,至于传输协议和hessian一样也是基于http协议
    源码、例子都在附件当中,时间仓促只在jdk1.6、tomcat6环境下测试的,也难免存在bug,不过基本例子绝对能够跑通,对于理解RPC原理还是足够用的 呵呵

在这里也算是抛砖引玉吧,供有兴趣的朋友一起讨论
使用方法与hession类似,本例子使用步骤如下:
1、将war发布到tomcat下,启动tomcat
2、运行TestClient即可
3、自己定制新的服务(例子提供的HelloImpl)与hession类似,在web.xml里进行配置



//测试代码

import oasis.client.OasisProxyFactory;

public class TestClient {
	public static void main(String[] args) throws Exception {

		//别忘记换成自己tomcat的端口啊
		String url = "http://localhost:8090/oasis_rpc/test.oasis";
		//通过OasisProxyFactory生产远程调用的服务
		OasisProxyFactory factory = new OasisProxyFactory();
		Hello hello = (Hello) factory.create(Hello.class, url);
		TestBean bean = new TestBean();
		//调用远程服务
		System.out.println("远程调用结果: " + hello.seeHello(bean).getName());
		System.out.println("name:" + bean.getName());
	}
}

你可能感兴趣的:(tomcat,json,框架,bean,Mina)