【问题标题】:Number of calls from Facade in Facade PatternFacade Pattern 中的 Facade 调用次数
【发布时间】:2011-10-27 06:46:03
【问题描述】:

我们正在“讨论”应该在外观层中放置什么以及外观层应该对底层进行多少次调用。

在我们的项目中,我们有一个协调对服务和数据库的调用的编排层。我们还有一个包含业务规则和计算的业务层。

我们的外观层具有安全检查、日志记录和错误处理功能。

现在的问题是:外观应该只有一次调用编排层还是可以多次调用。如果只是一次调用,应该将这些层合并为一个层。

这些是用 C# 编写的 WCF 服务。

【问题讨论】:

    标签: design-patterns architecture facade


    【解决方案1】:

    Facade 内的调用次数无关紧要,只要调用执行一个操作(在调用者的眼中)并且完全执行。

    请记住,对调用者的单个操作可能包括日志记录、运行业务规则、打开与数据库的连接、写入数据库,然后最后关闭和清理连接。

    【讨论】:

      【解决方案2】:

      我支持贾斯汀的回答,我只添加一个考虑因素。如果您的编排层也处理业务层,并且您的外观最终成为与编排任务的一对一映射,那么您可以考虑将编排作为您的外观。但在这种情况下,您不会问,因此您的外观正在简化编排使用协议,或者编排和业务层是对等的。无论哪种情况,您都需要一个不同于编排模块的外观

      【讨论】:

        【解决方案3】:

        如果只是一次调用,这些层应该合并成一个层。

        Facade 和 Orchestration 层是松耦合的吗?如果是这样,那么我的回答是“不”不要合并。仅从原则的角度来看,我认为松散耦合是有价值的,应该保留它。

        Facade 应该只有一次调用编排层,还是可以多次调用。

        当它发出多个调用时 - 它正在执行的操作与编排层正在执行的操作之间有什么区别。想想他们活着的理由。

        但是,我允许区分纯粹的“业务”调用和“跨领域”调用。通过建立只允许一个“业务”调用“通过”Facade 的约定,您可以为业务服务保持一个干净的结构(永远不会有任何混淆);但另一方面,您在进行其他增强系统行为和功能的横切调用时在技术上不受限制。

        【讨论】:

          猜你喜欢
          • 2013-06-24
          • 2018-06-08
          • 1970-01-01
          • 1970-01-01
          • 2021-04-01
          • 2015-01-18
          • 1970-01-01
          • 2014-12-25
          • 2014-12-04
          相关资源
          最近更新 更多