【问题标题】:Adapter Pattern in SOA hexagonal/onion architectureSOA 六边形/洋葱架构中的适配器模式
【发布时间】:2013-09-16 22:51:27
【问题描述】:

假设您有一个需要 2 个服务的应用程序,例如。 Application, Service1, Service2

您是否应该按照onion architecture 构建额外的间接级别并将其中一个服务提升为应用程序服务,并将另一个降级为域服务。

或者您应该让Application 直接连接到Service1Service2

通过另一个级别的间接,您可以减少对Application 层的依赖,尤其是对外部服务,例如。 'Paypal'、'Facebook'、'Cyber​​Source' 并创建更适合您的编程范式的应用程序服务适配器。毕竟,让所有开发人员熟悉所有这些广泛多样的 API 确实不利于生产力。 Façade/Adapter 将使事情更容易开发,同时保护应用程序免受基础设施变化的影响。例如。该公司在 Cyber​​Source 上失败了,决定改用 Paypal,幸运的是您的应用程序被屏蔽了,您只需要更改适配器即可。

也就是说,适配器肯定会造成不灵活。随着应用程序复杂性的增加,适配器也变得泄漏。那么您可能会遇到 3 个问题:泄漏抽象、惰性层(由于有太多孔而做得不够的层)以及违反通用闭包原则,因为任何时候您需要更改 UI,您不仅要修改您的应用程序,还有您的适配器。

Service2 已经是同一家公司的内部服务时会发生什么?你还应该为每个子系统创建一个适配器吗?如果你的团队很小怎么办?如果您拥有数十个拥有不同技术的团队怎么办?是否有关于添加另一层间接与直接调用服务的适当性的指导?

【问题讨论】:

    标签: architecture soa onion-architecture hexagonal-architecture


    【解决方案1】:

    我认为您应该设计您的应用程序,使其依赖于对您的应用程序方便的接口,而与使用外部服务的任何考虑无关。您使用适配器/外观的想法很好,但我认为没有任何理由将Service1Service2 区别对待。

    如果我的应用正在制作小部件,那么我应该只调用 MyService.MakeWidget(args); 这个操作协调行为或 2 个不同的外部服务的事实是一个实现细节。

    我认为便利因素比替换外部依赖项的目标更重要(尽管两者都由 OA 启用)。方便的界面以间接为代价改进了应用程序的叙述

    【讨论】:

      猜你喜欢
      • 2015-05-19
      • 2018-10-06
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      相关资源
      最近更新 更多