Facade Pattern中Facade的调用次数

时间:2011-08-15 13:20:05

标签: design-patterns architecture facade

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

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

我们的外观层有安全检查,记录和错误处理。

现在的问题是:外观是否应该只对调配层进行一次调用,或者是多次调用都可以。如果只是一次调用,那么这些图层应该合并为一个图层。

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

3 个答案:

答案 0 :(得分:4)

只要呼叫执行一次操作(在呼叫者眼中)并且完全完成,Facade内部的呼叫数量就无关紧要了。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

  
    

如果只是一次调用,那么这些图层应该合并为一个图层。

  

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

  
    

如果Facade只有一次调用业务流程层,或者是多次调用就可以了。

  

它不止一次调用的那一刻 - 它正在做什么和Orchestration层正在做什么之间的区别。想想他们的生活理由。

但是,我允许区分纯粹的“商业”电话和“交叉”电话。通过建立只允许一个“业务”呼叫“通过”Facade的约定,您可以为业务服务保持一个干净的结构(从来没有任何混淆);但另一方面,你在技术上并没有限制其他横切调用来增强系统的行为和能力。