Finagle 中使用的 Netty 使用“处理程序”管道来顺序处理输入和输出数据。Netty 示例和包含的库显示了用于身份验证、协议编解码器和服务的实际业务逻辑等各种处理程序。
Finagle 似乎采用了处理程序的概念,而是直接为 API 用户提供编解码器、过滤器和服务。虽然这些具有不同的签名,但 Finagle 的新用户需要决定使用哪个来实现其整个服务器的每个部分。他们现在需要决定哪个部分应该是编解码器的一部分,而不是任何过滤器,还是链末端的单一服务,而不是仅仅决定在哪里将链分解为各种 Netty 处理程序。总而言之,虽然 Finagle 是一个比 Netty 更高级别的库,并且应该使构建服务的任务更容易,但 API 用户可能有更多的选择。
将处理流的特定部分放入编解码器与过滤器与单一服务的关键决策点和优点/缺点是什么?如果管道有可能进一步扩展,是否应该将服务逻辑放入过滤器中,在管道末端使用“noop”服务?鉴于排序过滤器(作为管道中的处理程序)的灵活性,而不是一端的单一编解码器和另一端的服务,为什么“一切”不应该是一个过滤器?