文章目录
- 前言
- 一、RPC是什么?
- 二、实现思路
- 1.创建远程服务器
- 2.创建客户端
- 代理模式(小白解释)
- 总结
前言
相信大家一定知道Java中接口的概念吧,我们可以在一个接口中先定义一些方法,但这些方法里却并不能出现方法体,而我们想要让这个接口中的方法有意义,那我们必须要写一个接口实现类,在这个类中实现接口的方法(写入有意义的方法体),这样就比较麻烦,当我们进行团队协作的时候,免不了要进行分工合作,那么我们能不能分别的在各自的电脑上去写好接口的实现类,然后通过某种连接去让伙伴不用写接口的具体实现类,而通过调用我们的电脑上写好的具体实现类中的方法去获得他们想要的值呢?答案是可行的,这就引出了我们的解决方法:RPC远程过程调用
提示:以下是本篇文章正文内容,下面案例可供参考
一、RPC是什么?
示例:)它的意思是远程过程调用,即一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
二、实现思路
我们是不是可以将我们想要调用的接口中的方法名,和参数通过网络通信发送给已经实现了这个接口的服务器上,然后借服务器的“手”来通过创建类对象,调用方法,传入参数,取回返回值,然后在通过网络通信发送给客户端,客户端来通过网络通信进行接收,然后得到了返回值,这不就是相当于实现了这个方法的价值么(成功的调用了方法,并且取到了返回值),这虽然不是我们自己去实现了这个接口中的方法,但我们拿到了我们想要的东西,这在团队协作上是一件多么提高工作效率的是呀。
这个方法的精髓就是网络通信:
客户端的一写(写入接口名,调用的方法名,需要传入的参数)一读(读取服务器端通过网络发送回来的此方法的返回值)实现了RPC。
服务器端的一读(读取客户端传来的接口名,调用的方法名,需要传入的参数)一写(了解了客户端的意图,调用方法,将返回值写入)实现了RPC。
1.创建远程服务器
在服务器上创建一个接口,作为以后给客户端提供可调用的方法,然后将这个接口打包成jar包,将来发送给客户端,然后在另外一个包下实现接口的方法
2.创建客户端
我们客户端需要干的只有三件事:
1.通过jar包得知服务器给我们提供了那些方法
2.选择方法进行调用,将方法名,参数,接口名通过网络传给服务器
3.接受服务器传回来的返回值
1.首先,我们调用方法必须得要有一个被实例化的对象,通过对象名.方法名(参数)才能调用方法,那么我们首先要做的是拿到一个对象,但是我们现在并没有服务器提供的这个接口的实现类对象,这就需要引出我们的代理模式——>Porxy类对象,拿到这个对象后,我们就可以吧他当做是这个接口实现了的类对象,然后调用接口中的方法,然后网络通信传值的事情就交给代理去做,然后把返回值返回,代理里面的代码就是我们客户端的核心代码
代理模式(小白解释)
把我们当做是高考后的考生,我们需要找到一个能通过我们的高考成绩来给我们选择出一个最佳的填报方案,然后只需要我们给钱,然后他就会吧这个最佳方案给我们,我们自己不再需要去进行对比前几年的数据来寻找合适了学校,我们就拿到了最佳的填报志愿的方案。
上述描述中的高考填报机构(组织)就是代理模式Proxy
而创建Proxy需要一个很重要的参数:Handle
这个Handle便是我们和机构中的那个对接老师(内个高考机构不可能只有一个老师,一定会有一个老师专门负责和你进行对接),而在Handle中,才是我们真正需要写的客户端代码,即给发给这个对接的老师我们的信息(高考分数,想去的城市等等等等)
在这个Handle中有个重要的invoke方法,这个方法里面就是放我们想要在这个代理干的事情,比如我们找这个填报志愿的机构就是想要去让它通过我们的高考成绩,给我们一个合适的填报方案,这就是我们想要代理去干的事情,客户端的核心代码其实是在这个invoke方法里面
这个invoke里面的方法会在调用由Proxy动态创建的代理对象.方法名(参数)的时候自动被调用。
总结
以上就是今天要讲的内容,本文仅仅简单的利用网络通信和代理模式简单的实现了一个RPC远程调用框架,写的不好,便于小白快速上手,如有错误,还请不惜赐教。