【问题标题】:Layered and Pipe-and-Filter分层和管道过滤器
【发布时间】:2014-02-17 08:33:35
【问题描述】:

我有点困惑应该在哪些情况下使用这些模式,因为从某种意义上说,它们似乎与我相似?

我理解分层是在系统复杂的情况下使用的,可以按照层次来划分,所以每一层都有不同层次的功能,使用较低层次的功能,同时暴露其层次功能更上一层楼。

另一方面,管道和过滤器基于处理数据的独立组件,并且可以通过管道连接,因此它们构成一个执行完整算法的整体。

但如果层次结构不存在,那么模块的顺序是否可以改变?

还有一个让我困惑的例子是编译器。这是一个管道和过滤器架构的例子,但是如果我没记错的话,一些模块的顺序是相关的?

一些澄清事情的例子会很好,以消除我的困惑。提前谢谢...

【问题讨论】:

    标签: architectural-patterns


    【解决方案1】:

    也许现在回答为时已晚,但无论如何我都会尝试。 两种架构风格的主要区别在于数据流。

    一方面,对于管道过滤器,数据从第一个过滤器推送到最后一个过滤器。 他们将被推动,否则,该过程将不会被视为成功。 例如,在汽车制造厂,每个工位一个接一个。 汽车将从第一站组装到最后一站。 如果一切顺利,您最终将获得一辆完整的汽车。 对于编译器示例也是如此。上一次编译后得到二进制代码。

    另一方面,分层架构规定组件被分组在所谓的层中。 通常,客户端(访问系统的用户或组件)只能从最顶层访问系统。他也不关心系统有多少层。他只关心他正在访问的层(最顶层)的结果。 这与输出来自最后一个过滤器的管道和过滤器不同。

    另外,正如您所说,同一层中的组件正在使用来自较低层的“服务”。 但是,并非必须访问来自较低层的所有服务。 也不是上层必须访问下层。 只要客户得到他想要的东西,系统就可以工作。 与 TCP/IP 架构一样,用户在不了解 Web 浏览器或任何底层协议如何工作的情况下使用应用层的 Web 浏览器。

    对于您的问题,分层架构中的“层次结构”只是一个逻辑模型。 您可以只说它们是包或某些组件组,它们在链中相互访问。 这里的关键点是结果也必须从最后一个组件返回到第一个组件(客户端正在访问的位置)的链中返回。 (与 Pipe-and-Filter 相比,客户端从最后一个组件获取结果。)

    【讨论】:

      【解决方案2】:

      1.) 分层架构分层架构,它将整个系统视为-

      结构层次

      软件系统被分解为不同层次的逻辑模块。

      在哪里

      2.) 管道和过滤器是一种数据流架构,它将整个系统视为-

      对连续数据集的一系列转换

      其中的数据和操作是相互独立的。

      【讨论】:

        猜你喜欢
        • 2013-03-14
        • 1970-01-01
        • 1970-01-01
        • 2020-10-24
        • 1970-01-01
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        • 2017-11-29
        相关资源
        最近更新 更多