8.2.7 使用统一管道过滤器模式的HTTP过滤模块

有一类HTTP模块被命名为HTTP过滤模块,其中每一个过滤模块都有输入端和输出端,这些输入端和输出端都具有统一的接口。这些过滤模块将按照configure执行时决定的顺序组成一个流水线式的加工HTTP响应的中心,每一个过滤模块都是完全独立的,它处理着输入端接收到的数据,并由输出端传递给下一个过滤模块。每一个过滤模块都必须可以增量地处理数据,也就是说能够正确处理完整数据流的一部分。

这种统一管理过滤器的设计方式的好处非常明显:首先它允许把整个HTTP过滤系统的输入/输出简化为一个个过滤模块的简单组合,这大大提高了简单性;其次,它提供了很好的可重用性,任意两个HTTP过滤模块都可以连接在一起(在可允许的范围内);再次,整个过滤系统非常容易维护、增强。例如,开发了一个新的过滤模块后,可以非常方便地添加到过滤系统中,这是一种高可扩展性。又如,旧的过滤模块可以很容易地被升级版的过滤模块所替代,这是一种高可进化性;接着,它在可验证性和可测试性上非常友好,我们可以灵活地变动这个过滤模块流水线来验证功能;最后,这样的系统完全支持并发执行。