当前位置: 首页 > 网络应用技术

杜松子酒中间件实施的实施

时间:2023-03-06 14:03:29 网络应用技术

  首先,让我们看一下实现实现的细节。让我们看一下中间部分的用法:

  我相信,当学习Java的学生首先接触中间部分时,他们会感到这样:“这不是过滤器/拦截器吗?”

  是的,从实用主义的角度来看,SO所谓的中间件本质上是开发人员提供的通用过程控制。我们可以将一些通用的过程控制代码集中在中间件上,例如权限验证,日志记录等待。

  如果我们想实施类似于杜松子酒的中间机制,您会怎么做?

  首先,让我们考虑中间件系统的功能:

  总而言之,我们中间系统的主要目的是管理中间件功能的呼叫关系。您可以通过数组或链接列表管理中间功能,但该功能是Golang的第一个级别公民。自然,我们需要使用封闭机制来实现简单的中间件系统。

  由于闭合机制用于实现中间件的功能,因此我们在中间功能中要做的是打包业务功能并返回包装业务功能,因此我们可以实现自由组合的中间功能。

  我们将业务函数定义为无访问的函数。为了测试可以随机休眠0到2秒的函数,我们被用于模拟业务处理。

  接下来,我们定义三个中间功能,并通过业务功能组装它们

  组合(因为中间功能在包装后返回业务功能,所以我们可以自由地结合这些中间件。)

  组合后的中间软件和业务功能如下:

  可以看出,组合的中间件和业务功能本质上是呼叫堆栈()

  与关闭相比,选择了具有小认知负担的实施方法。底层使用功能数组来保存这些中间件并定义以下内容:

  每当有到达服务器的请求时,它将为此请求分配一个。上下文保存了请求的相应处理器链,并引用了一个符号记录当前正在处理的记录。

  构造上下文时,调用方法将开始处理请求。

  如果您想在上述情况下达到决策效果,我们只需要拨打中间呼叫即可。目前,上下文将在索引中添加1个以执行下一个。当函数调用堆栈回到当前方法时,索引大于索引大于不会发生大小的大小。

  如果您注意到上述大小转换为类型类型,则可以限制类型的类型。从理论上讲,只能支持127个,但实际上,当添加呼叫方法时,将比较大小。该值直接报告错误。

  因此,如果我们想事先结束请求,我们可以直接设置它以获得值得的值。

  在转换上一篇文章的示例之后,我们将获得以下代码:

  Gin的中间件系统的底层维护一个函数数组和一个索引,用于存储中间软件功能和接口处理功能。