也许现在回答为时已晚,但无论如何我都会尝试。两种架构风格之间的主要区别在于数据流。
一方面,对于 Pipe-and-Filter,数据从第一个过滤器推送到最后一个过滤器。他们将被推动,否则,该过程将不会被视为成功。例如,在汽车制造厂中,每个工位一个接一个。汽车将从第一站组装到最后一站。如果一切顺利,您最终将获得一辆完整的汽车。对于编译器示例也是如此。您从最后一个编译过程中获得二进制代码。
另一方面,分层架构规定组件被分组在所谓的层中。通常,客户端(访问系统的用户或组件)只能从最顶层访问系统。他也不关心系统有多少层。他只关心他正在访问的层(最顶层)的结果。这与输出来自最后一个过滤器的管道和过滤器不同。
此外,正如您所说,同一层中的组件正在使用来自较低层的“服务”。但是,并非必须访问来自较低层的所有服务。也不是上层必须访问下层。只要客户得到他想要的东西,系统就可以工作。与 TCP/IP 架构一样,用户从应用层使用 Web 浏览器,却不知道 Web 浏览器或任何底层协议如何工作。
对于您的问题,分层架构中的“层次结构”只是一个逻辑模型。您可以说它们是包或某些组件组,它们在链中相互访问。这里的关键点是结果也必须从最后一个组件返回到第一个组件(客户端正在访问的位置)的链中返回。(与客户端从最后一个组件获取结果的管道和过滤器相反。)