【问题标题】:SOA architecture. Best strategy to support versionsSOA 架构。支持版本的最佳策略
【发布时间】:2016-01-25 15:10:33
【问题描述】:

他正在讨论支持 SOA 版本的正确方法。

  1. 一种选择:以严格的方式在同一应用程序中实现所有端点(版本/合同)。从而支持在同一应用程序中的向后兼容性。

  2. 第二个选项:创建具有单个端点的分支。在不同的应用程序中部署每个端点。

每个选项都有其优缺点。我注意到的大多数网站都在同一应用程序(代码库)中支持严格/敏捷/灵活的策略。 但第二种选择也有好处。通过将端点分解为分支和不同的部署,每个端点变得更加稳定并与其他端点分离。允许开发人员在编写新功能时不考虑向后兼容性。我想这也会使第 3 方集成变得更加困难(更改数据库方案等)。

你怎么看?

【问题讨论】:

  • 我认为这个问题已经深思熟虑了。 resources.sei.cmu.edu/asset_files/TechnicalNote/…
  • 我读过这篇文章。这是一个非常好的和翔实的。一些解决方案在服务 ALM 中。他们似乎支持具有不同策略的第一个选项(直接与中间基础)。确实提到与选项1的向后兼容性可能非常昂贵。我仍然找不到提到第二个选项的任何地方。这对我来说似乎很可靠。
  • 我想如果你对分布式版本的可能爆炸没问题,选项 2 是可以的。我认为这会导致过多的维护,但也许不会(非常主观)。除非每个部署都在其自己的数据库上(听起来不是的情况),否则您不必处理兼容性问题吗?我怀疑很难避免它,那么为什么不让其余的简单一些呢?或者,您可能会执行主要版本类型的更新(v.1.2.3.4 到 v.2.0.0.0)然后部署一个新实例,但不部署次要版本(v.1.3.4.5)。主要版本建议进行重大更改并可能失去兼容性。

标签: wcf architecture soa


【解决方案1】:

绝对是选项 2!

要解决数据库问题,您可以为每个微服务使用一个存储库,并避免多重性,在碎片内核中处理生成的 ORM 实体。正如我所见,微服务的想法是它是一个支架单独的过程,而如果您采用第一种方法,则您将在不相关的服务之间耦合(不在同一域中 => DDD)+ 向后兼容性问题,每次您想要修复时,您都必须:或更新所有微服务,或要求客户更新他们的一面。

诚挚的 YBM

【讨论】:

  • 缺陷怎么办?您必须在所有分支中修复它们。并重新部署它们。在选项 1 中,它是一个单一的修复和单一的部署。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 2014-06-19
  • 2018-10-05
  • 2020-06-28
  • 1970-01-01
  • 2016-11-29
  • 2011-10-03
相关资源
最近更新 更多