00:01
异步模型我们在前面说到,就是在net里边呢,它有一个返回一个就是我们说China future,大家看这里我们在server端。当我们绑定一个装端口启动服务过后呢,我们返回的是一个China future对不对。在我们客户端,大家看一下客户端这边我们是不是一个connect connect过后呢,它也返回一个。China future我们在前面讲的时候,我们说过这里是涉及到ni的异模型,我们就来说一下异模型是怎么回事,来,我们一起看看。异步它和它的概念呢,跟同步是相对的,当一个异步过程调用发出过后,调用者不能立刻得到结果,就是这个结果呢,并不是说马上告诉你是成功了还是失败了还是怎么样。实际处理这个调用的组件在完成后呢,它会通过状态通知或者是回调来通知调用者。
01:04
对。的IO操作呢,都是异步模型,你比如说像band right connector这些操作都会先简单的给你返回一个看,呃,这个China future,那China future到底是个什么呢?我们来简单看一下先。打开我们的。Idea我们进入到我们发现China future呢,对它的说明哈,当然它下这个这个地方是个接口,它下面有很多具体的实现,实现之类,这都很有很多哈哦,我们先来看一下。他的介绍。这里面呢,第一句话就能说明他的一个核心思想,就这样子的,他说China future是一个结果。是个result什么结果呢?是一个大家看到是不是这是一个异步的IO,它是一个基于异步的IO操作的结果。
02:00
说的再简单,简单一点,它就是一个异步结果,那么这个异步结果到底是什么呢?我们回到这边继续来看。就是在在这里。对,在这里。调用者呢,并不能立刻获取结果,而是通过一个need叫future listener间这个机制。用户可以方便的主动获取或或者通过通知的机制来获取IO的操作,那么这个future listen这个机制呢,它最核心的就是说第一个这个future代表这个结果呢,是在未来才才会知道是成功了还是失败,就直接返回。listen指的是什么呢?就说我可以加这个监听器,在这个返回的这个结果上增加一个监听器,然后呢,如果你呃成功了还是失败了,我可以通过监听器来知道结果。待会儿呢,我们举案例来说明。第四,一个ni的异步模型,它其实就是建立在future,还有捆back就是回调之上的,基于这个捆back回调就不多说了,我们阿贾克斯其实它就是一个异步模型,它也会在这个结果过后呢,调用我们的回调函数来处理,我们重点说一下future future它的核心思想是这样子的,假设有一个方法放。
03:22
通过过呃,计算过程可能非常的耗时,等待放返回显然不合适,就这地方这个方法可能会阻塞,或者说它非常耗,耗费时间,如果我们一直等待这个结果返回呢,不太合适,怎么办呢?我们可以这样做,那么可以在调用放立即返回一个future。后续可以通过future去监,去监控这个放处理的过程,这就是我们的future listener机制。这是它的基本介绍,那现在呢,我们就对feature做一个简单说明,我总结几句话,Feature到底是什么呢?来看一下。他表示。
04:01
它表示异步,它表示异不什么呀的结果。它表示一个异步的执行结果,异步的执行结果OK,他可以干什么呢?可以通过他他提供的,哎,他提供。的方法,就是这个future呢,它会提供相关的方法来干什么呢?来检查。检查什么呀,这个执行是否完成。是否完成?对啊,等待。可他就可以用相关的方法来检测是否完成,诶比如比如干什么呢检索。比如检索、计算等。等等。那第二句话呢,我们要说一下这个future。大家可以看到future。
05:02
Future下边呢,有一个叫做China future,我们用的最多的是这种类型啊,当然是这个China。China future。抢着朋友圈。是一个什么呢?是一个接口。大家看到是不是这里面这个China future是个接口,刚才我们已经看到了。我这儿看一下啊。我们在这边看看这边结构。它是一个接口,看到没有,就它是个这个东西。写到这里了。它是一个接口形式是这样子的。对不对,那这个接口它能做什么事情呢?我们来聊两句干什么呢?我们我们可以添加添加监听器。监听器。然后呢,当监听的事件,当监听的事件发生时。
06:02
监听的事件。事件发生时。可以干什么呢?就会就会通知到监听器。是这样子的,那待会儿呢,我们会有一个案例说明,一会儿我案例说明。好,这就是我们future的一个基本说明,当然它下面有很多实现子类了,对不对,你看这些。是不是有很多这个close future,对不对,还有completely的channel future,还有像default channel progressing promise。等等,那后面呢,在用的时候,我们再一个一个的说明,接着我们继续往下看。它的工作原理图是什么样的呢?我们来了解一下,它是这样子的。在使用net进行编程的时候拦截操作。和转换出入站数据,只需要你提供一个comba或者利用future就可以了,就说我们这个pampal,就是我们这一个管道呢,它的数据我们这个称之为出站,这个称之为入站。
07:13
对,那么在出站和入站的时候呢,如果说我们这个数据你你只需要通通过一个call back或者是利用future就可以了,不是说我们一定要要等待,然后呢,使用这个链式操作就可以简单高效的利并利用编呃并有利于编写我们可从用的通用的代码,这第一个第二个net框架的目标就是让你的业务逻辑从网络基础应用编码中分离出来,解脱出来就说什么意思呢?嗯,就是说他在这个整个这个过程中,你看这有你看这里面它是怎么写的,这有一个handler。Handle德ler呢,会,呃,这边会有一个叫做出战的事件来驱动它,这边又有一个出战的handleler,而这边呢,是产生了一个入战的事件,会驱动我们入站的handler,以此类推。
08:07
那这个图呢,画的有一点点抽象,我们再画一个相对啊,大家容易理解的一个图形,帮助大家去理解它的含义,好,那现在呢,我们来看另外一张图,我们来看另外一张图,通过这个图加深对它的一个认识,来看一下。写到这儿,我们先写一个名称,叫做链式操作示意图。链式。链式操作示意图,好,呃,怎么说这个事儿呢?我们先来画一个,呃,框框,这个叫什么呢?叫做读取数据。比如说我们这有个读取数据的操作,那些读取数据后面呢,拿到这个数据过后会经过一系列的呃,数据处理,比如这是什么呢?这就是数据处理。数据处理的时候呢,一般我们先进行一个编码,对不对,编码好,紧接着继续往下处理,下一部分是干什么呢?就是数据的传输。
09:09
数据的传输好,数据传输完了过后到下一步,下一个动作该干什么呢?下一个呢,就是我们。呃,有一比如说服务器端接收到数据了,这边就叫数据的这个传输,或者叫呃,它是数据传输过来过后呢,这个就叫数据接收,或者叫数据处理,但这个处理的呃重点是在什么呢?是在呃解码。因为你的数据编码完了之后,通过网络传输过来,我这边拿到过后对它进行解码,进行解码过后呢,我们再进行一个,比如说再进行一个显示。好,解码完了过后,我们就显示到我们这边号,比如说数据显示我要写数据。这个流程,那我们看看这个链式操作他会怎么做呢。
10:00
好,首先看第一步到这儿。然后呢,往下面继续走。往下面继续走。满天继续往下走。好的,那在每一个呃,数据处理的环节,数据处理环节我们都会有相应的handler来与之对应。也就是说呃,在这个数据呃流动的过程中,呃,每一个阶段呢,我们可以给他处理一个handler。Handler叫链式操作,好我就多写几个哈,这边呢也有handler。好,这边还有handler。对应,那也就是说我们在进行每一个环节的时候,操作的时候呢,我们让一个handler与之对应。画这样一个示意图。这边也是一样。好,这边呢也是一样。好的,那关键就在这里,数据的读取,刚才有这么一句话就是。拦截操作和转换入账数据只需要我们提供,只需要提供一个call back或者利用利用future就行了,那这样呢,就能做到一种异步的呃处理,那怎么来说呢,大家看。
11:12
我们这边再写。几句话啊。再写几句话,看这里。比如说我们这个地方也读取数据呢,其实也会有一个handle,大家明白我的意思吧。就说每一个环节我们都是可以对应handle,那么我们就说这一个handler,其他handle都是一样的道理,干脆我们都统一的用红色的框框来说好吧。都统一用红色的框框来说这个事情。好,放到这儿。那这个handler可以怎么做呢?刚才呃,老师已经说了,在handler,在handler处理的时候。处理中处理中我们可以干什么呢?可以使用使用call back。Call back,或者或者future future就是我们的这个机制,干什么呢?实现异步。
12:05
异步就是说原先我们在没有使用异步的时候,它这条线呢,比如说我们在这个地方要处理编码了,对吧,处理编码的时候呢,我们我们就没有这种异步机制,但是在我们ni里面呢,它提供这种就是future或者call back。这样一个机制呢,你在处理的时候,这个地方它是可以做到异步处理的。他是做异步处理的,就好像同学们刚才看我这句话。还回到这里来。大家看。呃,我们还找到最先前的一个位置,比如说这。他在connect的时候,我我调用这个地方再进行处理的时候,其实我马上就返回一个,呃。Future的这么一个对象,然后下面我继续编写为代码,只是这个结果呢,它会通过监听器,或者说通过相关的一个机制,监听机制来获取,最后结果是成功了还是失败了。
13:02
对,有点类似于我们这样的一个一个刚才画的这个图,我们在每个环节进行处理的时候呢,都可以去使用在这个handle里面去引入我们call back或者future这种机制实现异步处理,明白我的意思了吗?啊,当然有些同学说我还是有点不明白,没关系,待会呢,我给大家举个例子,就是怎么样在我们这个future里面增加监听机制来获取这一个异步,结果他的是成功了还是失败了?好,同学们,那关于异步模型的一个工作原理,我们就先聊到这儿,下面呢,我们就准备举一个例子哈,就是重点就说一下future listener到底它是怎么实现的,就怎么来实现这个东西,好,那下一个视频我们再说这个事。
我来说两句