00:02
Port buffer,我们先来看一下pro buffer基本介绍和它的使用示意图。首先我们看一下port buffer呢?它是哪一个公司出的,产出的一个项目是谷歌发布的开源项目,全称是谷歌。Protocol buffers,它是一种轻便高效的结构化数据存储存储格式。所以说它主要是用来做什么呢?做这个数据存储的。然后他还可以干什么呢?它可以用于结构结构化,数据串行,串行化,或者叫做序列化,它非常适合做数据存储,或者是注意听这句话。RPC数据交换格式,那首先我们对这个RPC做一个简单说明,它是什么呢?它叫远程,远程过程调用。实际上现在我们有很多的这种服务器,它都会使用到RPC。所以说在这个过程中,如果我们要涉及到数据的交换呢?可以考虑使用Google buffer。
01:05
那它的全称是remote。远程的procedure什么呀?这样就远程的过程调用,远程过用调用,那么现在目前现在来看呢,有很多公司有原先的HTHTTP加G,现在转变成TCP加port buffer的形式来进行数据交换。这句这句话是这样说的啊,就是说我们,诶目目前目前很多公司。公司他是向这个进行转型,原先是。HTP。现在呢,逐渐转成这样一种形式,就是TCP加什么呢?加proTo Buffer。诶用这种形式呢,来进行数据交换,效率会更高。另外一个呢,就是关于port buffer呢,它有一个参考文档,也就是我们的语言指南,这边是叫做语言。
02:03
要与。语言。指南。那语言指南在这个页面,大家可以去看一下这个页面,这个页面呢,需要同学们使用一下代理才能看到,那我这已经打开这个页面,大家先简单看一下,就这个页面。Language guide里面呢,他对这个pro pro buff呢,进行了一个详细的介绍,他是怎么怎么使用的,对。下面都有详细的说明,还有给了很多案例,比如说像这个地方,他写了他一些通用的数据类型,比如C加加,Java Python类型,还有。Go等等这些类型呢,是怎么去使用的,就是说如果是你这些类型,比如说我这有。Prototype。Float它就对应什么呢?对应C加加里面的float,对应Java里面的float,对应我们Python里面float,对应我们go语言的FLOAT32。这样的一些说明,就是说他将来会是用pro,他用他自己的一种数据类型叫做proto type,去对应其他语言的,其他语言的一些类型,当然这样对应的类型呢,一般都是一些基本类型,对,因为它做的通用性嘛。
03:13
好,那接着我们再再来看一下。Pro buffer呢,它实际上是以message的方式来进行数据管理的,待会呢我们会举例说明,另外一个就是同学们要明白的是,Pro buffer它是支持跨跨平台跨语言的,也就是说我们客户端和服务器端可以是不同的语言来编写的,目前支持绝大多数的。语言,比如说C加加c Java Python等等。大家回到前面这个图,我们在前面说过。就是nity他本身提供的一些兵,这个他提供的。编编解码器呢,它是无法做到跨语跨语言的,那如果说我们用了谷歌的这个port buffer的话呢,比如说你的客户端是Java写的。
04:01
你的客户端是Java写的,你的服务器端是用Python写的。也是可以同样使用的,就当然它有具体的相应的方案,就它是可以做到两两端,两个端点它的语言不一定是相同的,这是一个特别好的特点,就是可以支持跨语言。那接着我们继续来看pro buffer呢?它性能很高,可靠性也具有高可靠性。那我们来看一下它一个使用。是怎么来做的呢?它使用pro buffer编译器,能够生成自动生成代码,Pro buffer是将内的定义用点pro文件进行扫描述,也就是说我们待会呢要做的这个流程proTo Buffer来使用的话呢,就不用直接写,比如说我们要是用Java类,就先。就你就不需要写Java文件了,你写的是点port文件,在这里面说明你这个类的信息。
05:01
在idea里面,我们写这个点port b文件的时候呢,它会自动提示你下载一个编写的插件,这个插件写下来过后呢,可以做到语法高亮,同学们用的时候它会自动提示。然后把你生成的这一个点文件通过它提供的一个pro c.exc这个编译器来生成对应的Java文件,那么我们来看一下它基它使用的一个示意图,使用示意图。它是怎样做的呢?我们还回到原先这个图,好,我把这个图呢拿过来给大家再次再次梳理一下,我把这边先选一下。选错了。选择。等一下。放这我们来看一下,如果使用了。如果我们使用了port buffer,它的使用的一个示意图是什么样子的?我不对,往上拎一拎,它是这样使用的,同学们注意看啊。
06:00
怎么走呢?我把这个原理说清楚,我们就举例说明,下面会有案例的,他是这样做的,业务数据呢,它是这样来描述。来往这边稍微拿大一点,首先它要求你按照port buffer的规范来编写什么呢?这样一个文件,比如说我们有一个要传一个student类,那么你写的是先写的是student点。Proto这个文件。这个文件生成以后,同学们再使用什么呢?同学们需要使用他提供的proto c.ex文件。这个文件呢,进行一个编译,编译过后同学们它就会生成它给你,就说按照他的这个编译器给你生成的Java文件。但是这个Java文件的名字呢,实际上是由你在part啊,Part就是你写的这个student的点part文件里面来指定的,比如说我们生成的叉叉。
07:01
找他点pro啊,点Java文件好,当然这个文件的名字呢,不一定非非student啊,比如说也是另外一个名叫YY,好,就是说你先写一个。Pro这样的文件通过这一个proto c编译器来生成,按照他的pro buffer规范生成的一个加va文件,然后这边呢,他进一个编码,这边还是要编码,编码呢,它会提供一个叫proto。ProTo Buffer啊,类似于这样一个pro buffer的。叫做nco,他会给你提供。对,他会提供这么一个东西,那就意味着我们要下相关的包,那这样进行一个二进制传输,二进制传输以后呢,它这边有个解码,解码器呢,也会由我们这个pro buffer,它给你提供一个叫做proto。Barber decoder就是解码器,解码器完了过后呢,这边业务这这边业务数据呃,就会拿到,拿到过后呢,它会生成你这样一个类,就是你这生成就说你这对应的一个业务数据对象。
08:10
啊,业务数据对象,这个时候呢,你就可以去使用了。使用它的流程大概是这样子的,所以说我们可以看到如果使用buffer来进行处理呢,并不是像我们原先想象的,哦,我这写个Java文件。写一个按照按照我们原先写的开发的形式来写一个Java文件,然后呢,用它编码器传过去,不是这样子的,他先要求你按照pro buffer它的语法规定先写一个某某点port文件,然后用它的编译器生成某某点Java,然后呢,你在传的时候,其实传的是这个叉叉点Java文文件里面的某一个对象实例,当然你生成的时候呢,也是生成的这个某某点Java的某一个对象实例,但是我这还没说说到里面的细节啊。因为这个点叉叉点Java文件里面呢,它有一个外部类,还有一个内部类,我们真真实的这个数据,呃,真实的数据类型其实是它对应的那一个内部类的一个对象。
09:13
好,那我这样说完了过程大家大体有个有个认识,就是待会我们在用的时候呢,会先写这个文件,对,然后在生成一个Java文件,然后呢,针对这个Java文件,我们去,呃去创建一个对象,然后通过这一个编码器传递,传递过后呢,这边会有一个解码器把它解码,解码完了过后再得到你这传进去的某一个对象。啊,某一个对象,然后呢,就进行使用,它的流程是这样子的,好的,明白这个道理以后呢,我们就可以来做一个实例开发了,实例开发呢,我们举的例子是这样子的,用客户端可以发送一个student student的po对象到服务器,那具体呢,我们来看一下,呃,来看看怎么去使用的,好吧,那下一个视频我们来说一下。
我来说两句