Ruby中的Rack 中间件是什么?对于"中间件"的含义,我找不到任何好的解释.

推荐答案

Rack 作为设计

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种.这些往往是每个人在多个应用程序中都需要的东西,但没有太多人对构建自己感兴趣(或应该).

更多信息

Ruby-on-rails相关问答推荐

在Ruby on Rails中获取堆栈级别太深错误(&Q)

计算总价(商品数量*商品价格)

NameError:未定义的局部变量或方法记录器

如何从设计中删除/禁用注册

rails s和bundle exec rails s有什么区别?

如何在 to_json 中获取回形针图像的 url

如何在 Windows 中更新 ruby

Rails:保存子对象时更新父对象

Rails 中页面视图的简单计数器

Rails ActiveRecord:验证单个属性

水豚 click_link 与 :href 匹配

简单表单关联自定义标签名称

Rails 成语避免在 has_many 中重复:通过

Rails 错误:无法批量分配受保护的属性

Ruby 和 Ruby on Rails 离线 API 文档

将图标添加到 Rails 应用程序

如何从 rails 控制器操作发出 404 响应?

长期运行项目中的 Rebase Rails 迁移

我的 JavaScript 模式/实践很糟糕.我应该go 哪里寻求帮助?

使用 Rspec 测试关联的正确方法?