Web Service战争粒度最佳实践

时间:2013-01-11 15:36:45

标签: soa

在每场战争中拥有大量小型部署以及少量Web服务,或者每场战争中有大量Web服务进行大规模部署会更好吗?

在这种情况下,假设所有Web服务共享一个公共后端,并将从代码共享中受益。对于小型战争,必须将共享代码放入jar项目并包含在所有较小的部署中。现在每个战争都可以单独测试/部署,但如果后端发生变化,则需要更新所有战争,而不仅仅是一个。

这种情况下的后端是供应商提供的另一种Web服务。对它的更新通常是向后兼容的,但并非总是如此。

我知道没有明确的答案,但分享的任何经验都会有所帮助。

1 个答案:

答案 0 :(得分:1)

通常,您需要为每项服务进行一次战争。关键是服务不必是单个Web服务(事实上,一些端点可以是其他技术,而不仅仅是Web服务)。服务可以公开多个端点和合同。 您将相关合同组合在一起,例如,处理用户管理的服务可以为用户和组提供API。然而,与Orders相关的API可能属于不同的服务(因此也是战争)。 如果您对服务片进行切片太小,您可以得到我称之为nano-service antipattern的服务开销超过您从中获得的实用程序

enter image description here