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