假设您有一个需要 2 个服务的应用程序,例如。Application
, Service1
,Service2
您是否应该按照这种洋葱架构构建额外的间接级别并将其中一个服务提升为应用程序服务,并将另一个降级为域服务。
或者你应该Application
直接连接到两者Service1
吗Service2
?
通过另一个级别的间接,您可以减少对层的依赖Application
,尤其是对外部服务,例如。'Paypal'、'Facebook'、'CyberSource' 并创建更适合您的编程范式的应用程序服务适配器。毕竟,让所有开发人员熟悉所有这些广泛多样的 API 确实不利于生产力。Façade/Adapter 将使事情更容易开发,同时保护应用程序免受基础设施变化的影响。例如。该公司在 CyberSource 上失败了,决定改用 Paypal,幸运的是,您的应用程序被屏蔽了,您只需要更改适配器即可。
也就是说,适配器肯定会造成不灵活。随着应用程序复杂性的增加,适配器也变得泄漏。那么您可能会遇到 3 个问题:泄漏抽象、惰性层(由于有太多孔而做得不够的层)以及违反通用闭包原则,因为任何时候您需要更改 UI,您不仅要修改您的应用程序,还有您的适配器。
当Service2
已经是同一家公司的内部服务时会发生什么?你还应该为每个子系统创建一个适配器吗?如果你的团队很小怎么办?如果您拥有数十个拥有不同技术的团队怎么办?是否有关于添加另一层间接与直接调用服务的适当性指导?