Rack middleware不仅仅是"过滤请求和响应的一种方式"——它是使用Rack的web服务器pipeline design pattern的一种实现.
它非常清晰地区分了处理请求的不同阶段——分离关注点是所有精心设计的软件产品的关键目标.
例如,对于Rack I,管道可以有单独的阶段进行:
Authentication:当请求到达时,用户的登录详细信息是否正确?如何验证OAuth、HTTP基本身份验证、名称/密码?
Authorisation:"用户是否有权执行此特定任务?",i、 e.基于角色的安全.
Caching:我已经处理过这个请求了吗?我可以返回一个缓存结果吗?
Decoration:我如何增强请求以使下游处理更好?
Performance & Usage Monitoring:我可以从请求和响应中获得什么统计数据?
Execution:实际处理请求并提供响应.
在开发 struct 良好的应用程序时,能够分离不同的阶段(并且可以 Select 包含它们)是一个很大的帮助.
还有一个围绕Rack 中间件开发的伟大生态系统——您应该能够找到预构建的Rack 组件来完成上述所有步骤和更多步骤.见the Rack GitHub wiki for a list of middleware.
中间件是一个可怕的术语,它指的是任何有助于但不直接参与执行某些任务的软件组件/库.非常常见的例子有日志(log)记录、身份验证和其他common, horizontal processing components种.这些往往是每个人在多个应用程序中都需要的东西,但没有太多人对构建自己感兴趣(或应该).
关于它是过滤请求的一种方式的 comments 可能来自RailsCast episode 151: Rack Middleware个屏幕.
Rack 中间件是从Rack 发展而来的,在Introduction to Rack middleware上有一个很棒的介绍.
维基百科here上有一个关于中间件的介绍.