Ruby中的机架中间件是什么?对于“中间件”的含义,我找不到任何好的解释
机架作为设计
Rack中间件不仅仅是“过滤请求和响应的一种方式”——它是使用Rack的web服务器的管道设计模式的实现
它非常清晰地划分了处理请求的不同阶段——分离关注点是所有精心设计的软件产品的关键目标
例如,对于Rack I,管道的各个阶段可以执行以下操作:
-
身份验证:当请求到达时,用户登录详细信息是否正确?如何验证此OAuth、HTTP基本身份验证、名称/密码
-
授权:“是否授权用户执行此特定任务?”,即基于角色的安全性
-
缓存:我是否已处理此请求,是否可以返回缓存结果
-
装饰:如何提高要求,使下游处理更好
-
性能与性能;使用情况监控:我可以从请求和响应中获得哪些统计数据
-
执行:实际处理请求并提供响应
在开发结构良好的应用程序时,能够分离不同的阶段(并且可以选择包括它们)是一个很大的帮助
社区
还有一个围绕机架中间件开发的伟大生态系统-您应该能够找到预构建的机架组件来完成上述所有步骤和更多步骤。有关中间件列表,请参见Rack GitHub wiki
什么是中间件
中间件是一个可怕的术语,它指的是任何有助于但不直接参与某些任务执行的软件组件/库。非常常见的示例是日志记录、身份验证和其他常见的水平处理组件。这些往往是每个人在多个应用程序中都需要的东西,但没有太多人对构建自己感兴趣(或应该)
更多信息
-
关于它是过滤请求的一种方式的评论可能来自RailsCast第151集:机架中间件屏幕播放
-
机架中间件是从机架发展而来的,在机架中间件简介中有一个很好的介绍
-
这里有一个关于维基百科中间件的介绍