工作原理
使用 Fluff,首先要了解两个概念,请求处理器(Handler)
和中间件(Middleware)
,Handler 是应用程序的核心,负责处理主要的业务逻辑;Middleware 是对 Handler 的扩充,负责过滤和筛选请求,处理边缘数据等工作。
当请求到来时,Fluff 会构建由多个 Middleware
和一个 Handler
组成的请求处理模型,从最外层的 Middleware
将请求逐层传递,最终抵达 Handler
。
处理过程中,每一层都有权处理请求和返回应答,当其中一层返回 Response
对象后,处理链条也随之终止;返回的 Response
将有一个回升的过程,让之前的每一个中间件都有机会对它做出调整。
Middleware -> Handler 处理流程:
*-----------*
| Request | *-------------*
*-----------* *----| Middleware1 |
| | *-------------*
V |
*------------* | *-------------*
| Middleware |<---* | Middleware2 |
| Builder | | *-------------*
*------------* |
| | *-------------*
[process]----* *----| Middleware3 |
| | *-------------*
V | ^
*-----------* *----* |
| Handler | | *-----------*
*-----------* *-->| Response |
| *-----------*
| ^
*----------------------*
Fluff 的入口模块(Application
)实际上是一个中间件模型的构建器,它将 Middleware 和 Handler 打包成一个层次结构的模型;同时,它也是一个请求派发器(Dispatcher)
,将请求派发给最外层的中间件,激活处理链条,并对 Response
做出最后的调整。
如此一来,Application 将框架的功能性职责完全分摊给了 Middleware 和 Handler.