【发布时间】:2016-01-25 15:10:33
【问题描述】:
他正在讨论支持 SOA 版本的正确方法。
一种选择:以严格的方式在同一应用程序中实现所有端点(版本/合同)。从而支持在同一应用程序中的向后兼容性。
第二个选项:创建具有单个端点的分支。在不同的应用程序中部署每个端点。
每个选项都有其优缺点。我注意到的大多数网站都在同一应用程序(代码库)中支持严格/敏捷/灵活的策略。 但第二种选择也有好处。通过将端点分解为分支和不同的部署,每个端点变得更加稳定并与其他端点分离。允许开发人员在编写新功能时不考虑向后兼容性。我想这也会使第 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