Plack 代码和结构分析-plackup Architecture[译]
这篇译文深入拆解了 Perl Web 框架 Plack 中 `plackup` 命令的内部架构,核心聚焦于 `Plack::Runner`、`Loader` 与 `Handler` 三者的协作机制。 作者指出,我们常用的 `plackup` 脚本本身只是一个简单的封装,真正的“大脑”是 `Plack::Runner`。它负责解析命令行参数,并依次协调两个关键模块:`Loader` 与 `Handler`。`Loader` 决定了服务器的加载与运行模式,比如是否支持文件更改自动重启(Restarter),或是为每个请求 fork 新进程(Shotgun)。`Handler` 则是一个巧妙的适配层,它通过实现统一的 PSGI 规范接口,使得诸如 Starman、Twiggy 等原生 PSGI 服务器,甚至像 Apache2/FCGI 这类传统服务器,都能被 Plack 框架统一管理与调用。文章特别演示了如何自定义一个 `Handler`,以此扩展框架的服务器支持。 理解这些组件的职责与交互(文中的时序图做了直观总结),对于掌握 Plack 如何以高度可插拔的方式启动和管理 PSGI 应用至关重要,也为开发者自行扩展服务器支持提供了清晰路径。