00:00
Great。下面呢,我们就来自己实现double r PC基于nit的。首先我们先说一下需求说明,Double底层使用Nike作为网络通讯框架,要求Nike。要求用nit实现一个简单的RPC框架,这就是我们我们的目标,模仿double消费者和提供者约定接口和协议,就是这个接口和协议呢,我们事先要规定好。消费者远程调用提供者。就是这样说啊,消费者远程调用提供者的服务,这样写,提供者的服务少写。那么提供者呢?返回一个字符串,消费者打印提供者返回的数据,整个在整个这个程序里面呢,我们使用的网络通讯是基于ninety4.x的,现在就用4.1.20。哦,这样一个版本。没问题吧,好,那这个需求说完了以后呢,我们来对这个设计做一个简单的介绍,就是说在整个程序里边,WRPC程序里面,我们需要用到哪些。
01:09
文件,然后呢,他们基本的一个组成是什么样子的。首先呢,我们要编写一个接口,要定义抽象方法,用于消费者和。提供者之间的一个约定,第二个呢,我们要创建提供者,要创建一个提供者,该类需要监听消费者的请求,因为你在提供服务嘛,并按约定返回数据,还要创建消费者,该类需要透明的调用自己不存在的方法,内部我们要用net请求。请求提供者返回的数据,好的,那现在呢,我们画一个示意图,然后把这个图画好了,过后我们就可以编代码了,来同学们看。我在这里呢把。刚才。的整个这个说明用图的方式再画一遍,是使用什么呢?我们使用net。使用light编写。
02:02
编写一个double。Double的什么呢?这个我们叫做RPC。我们就写这个东西。那这样子,我们刚才已经说了,这边有有公用的部分。还有呢,提供者和消费者是吧,所以说呢,我们把这个把他拥有的这些接口和类再给大家规划一下。把这个放稍微放大一点。嗯。放大一点。好,同学们,那我现在开始画了,首先呢,我们这边是server端。我们肯定是先开发server,也就是我们的提供者,对不对,这边是我server server这边我们有哪些东西呢?来看一下,这边是我们server端。这边我们认为是。
03:01
柯南短。或者这样子吧,这边是端。这这边我写个开发叫做客户端。客户端。客户客客户端。客户端呢,就是我们的消费者。没问题吧,而这边呢,是我们的服务端。服务器端呢,就是我们的服务的提供者。嗯,大家都知道,他们中间呢,肯定会通过一个接口来关联的,所以说我首先在它们共用的部分,我划到这个位置来,大家能理解吗?就他们共用的部分。共用的接口,这个接口呢,待会我放到这个下面去,就叫我们取个名字叫public public什么呢?Inter interface。在这里面我会写一个接口,对这个接口我们就叫hello。Service。
04:01
就是我提供一个hello server这个接口。他们共用就是客户端和服务器端都会用到,那么在服务器这端我要开发哪些东西呢?好,我要开发这么几个文件,跟上老师思路。首先。呃,第一个文件,第一个文件我要开发的是什么呢?就是你这边不是有一个hello server接口吗?对不对,所以说我在这边会有一个这样的包,这样这样一这样一个包吧,也可以说provider。提供者宝贝的在这里面呢,我会写这么两个东西,一个呢就去实现这个接口。实现这个接口,那这个接口呢,我们就叫取个名字叫hello,我先把名字规定好啊,Hello service。没问题吧,这个地方是一个类。它会实现我们这个接口,另外呢,我还需要干什么呢?同学们,我还需要有一个启动类,比如说我这有一个叫做server。
05:08
Server。Boot。Boot。Strap。What?这个呢,会启动我们的什么呢?启动我们的这一个提供者,提供提供启动一个。一个。叫做提供者服务端,服务器端的提供者。服务提供者吧提供者。这个服务提供者其实就是什么呢?说的再直接一点,他就是一个nat。Ninety seven。啊,就是说我这边呢,会写这么一个类,这个类呢,它可以去启动一个服务提供者,提供者好,这是provide,那下面呢,我们还需要什么呢?同学们接着往下继续分析。在服务器中,我们待会还要有这么几个部分,就是关于Nike公用的部分。
06:05
哪部分?在这个ni提包下面呢,我们要开发这么一个东西,一个就是。Server。OK。第二个呢,就是什么呢,Server handler。因为我是基于ninety部分的。这个大家能看懂吧,也就是说在我们服务器这端呢,我们有一个provider这个包,下面呢,有hello service implement这个类,还有一个server bootstrap,它启动一个服务提供者。服务服务器用的其实就是个对象嘛,也就是说是一个net server,而这个light server里面呢,有处理器,这就是我们服务器端。相关的文件,紧接着我们再分分析客户端这边我们需要什么,首先客户端它是一个消费者对不对,所以说我肯定有一个包叫customer。
07:01
我看啊。这个吧,叫消费者customer也行。顾客开始。对吧,Customer。好,我们认为这是什么呢,消费者。消费者。那既然是消费者,大家想一想,他应该有哪些东西呢?他应该有哪些东西呢?首先是不是也应该由他帮我们去有一个类,帮我们去启动一个消费者,对不对,所以说这边呢,他会有一个这样的东西,我们叫做client。什么呢?Bootstrap。小写。Re。它的作用,它当然是一个类了。啊,他是个类,他干什么呢?他要启动一个消费者。消费者,这个消费者呢,其实就是我们所说的哪个呢,就是。
08:01
就是这样写吧,叫。叫na。Na。对,就这意思,我会启动一个ninety,就说他不是一个消费者啊,就boot strip,他只是帮我们启动一个消费者,这个是我们的一个包哦,我会把。K的bootrip放在这个包下面。洗个包吧。紧接着它有这个部分,是不是它也有关于Nike公用的部分呢?是不是同学们肯定嘛,想一想它也有它自己公用部分,这两个肯定是在不同的机器上的,对说这边呢,我们会开发一个client。没问题吧,就是ninety c,当然你有一个C就必须有一个ninety。K。Handler。所以说这这边呢,我们分析出来客户端这边至少有三个文件,一个是c boot,还有一个netland,还有netland handler,这是公有的部分接口,服务器这端呢,有四个文件,然后呢,整个消费的过程应该是这样子的。
09:11
对怎样子的呢?就是这边一旦启动一个消费者,他就发出一个请求。发出一个请求到哪里去呢?到我们服务器端,当然这个他因为因为他这边有接口吗?这个接公这个是公用的,所以说大家都会用到,比如说它会引入。你可认为?这是公用部分。好,这边呢,我们也可以画个线。OK。因为这个接口里面肯定是有方法的,所以说我在这儿启动一个消费者过后呢,我就去通过这个接口的一个方法去调这边hello service employment这个类的某一个方法。明白我的意思吧,但这里面还有一些解码,当然他这边肯定还有过程呢,肯定有一个编码的过程,这边肯定有编码。
10:07
好编,编码的话呢,这个地方编码,我们就用他的编码器就可以了。他一编码,那这边呢,肯定还有解码了。这是肯定的,哎,这个地方我们换一个颜色吧。这边编编码,这边就是解码了。到这。我们直接用united的。Light hung就可以了,同样这边他发了一个请求过来过后。是不是我们这边把这个结果拿到,拿到过后呢,我再把这个结果给你返回。对吧,那我这再换一个线。返回给我们这边。同学们返回的过程是不是编码?编码和解码又是一个逆向的过程?是吧,所以他这边呢,又有一个编码。就是客户端这边发消息有个编码的过程。
11:02
那这样。客户端这边呢,显然它就有个解码的过程,是不是我们现在都讲过这个东西解码。好,同学们大致的这么一个结构,就是用nit来写,我们double r PC呢已经完成了,关键的地方是在哪里呢?就是说你怎么去,你你创建一个消费者去调查的时候,你调这个方法肯定是通过一个代理的。对不对,所以说这边还有一个最核心的地方,就是你怎么去创建一个代理对象,这里的核心就是去创建一个代理。代理对象,这是关键。那代理对象呢?我们其实在原先同学们在学这一个设计模式的时候应该学过。代理模式不管是静态代理还是动态代理,大家应该学过,如果说代理这块大家不清晰的话呢,待会老师写代码的时候,你可能有点看不懂,如果看不懂的话,我推荐同学们去学一下。
12:03
设计模式,这个设计模式模式呢,你们在网上也可以找到,比如说在哪里呢?待会儿我会用到这些东西。做代理。我会用到这个代理,代理模式会用到哈,待会呢,同学们看我编代码的时候,如果你听不懂,那你就去看一下代理模式,代理模式我这就不会说太多。只是呢,如果同学们没有明白的话,自己在网上查点资料好,那关于light的整体的就是我们用ni编写double r PC的整体结构,我就分析完了,下面呢,我们就要准备用代码来实现。
我来说两句