处理应用服务/(微服务)中相关实体的最佳实践



我已经看了几篇这样的文章,但我无法澄清我脑海中关于设计的困惑。在使用micro services时,为相关实体添加CRUD的最佳实践是什么?(我的问题通常与微服务有关,但目前我正在使用aspboilerplate,具体来说)

例如,我有一个实体Product,其中有大约7到10个属性。然后是另一个实体ProductContract。每个产品可以添加/更新多个合约。

ProductContract实体创建单独的应用程序服务是一个好主意吗?因为它将有自己的输入/输出Dtos和逻辑等。

最好创建一个ProductContractManager并保持它的逻辑。然后将此管理器注入Product应用程序服务?这样,产品应用服务就会有'AddProductContract', 'UpdateProductContract'等方法。

ProductContract是否应该由不同的服务拥有的主要驱动因素是一致性需求,因为在微服务之间实现更强的一致性是困难的(特别是没有在DB级别将服务捆绑在一起:如果按照这种方式进行下去,可能还应该重新考虑拥有单独的微服务的决定)。所以你想问的主要问题是,如果更新/删除Product,是否会有一个更新/删除不反映在ProductContract中的时间窗口(反之亦然)?

如果答案是不能,那么您只需将ProductContract的责任放在负责Product的同一个服务中,就可以省去很多麻烦。如果最终的一致性是允许的,那么可能需要一个单独的服务:这里的考虑不是真正的技术,而是与人类组织(谁将开发和维护功能)以及对ProductContractProduct是否会一起发展的期望(其中一个的功能更改可能也会导致另一个的功能更改)有关。

相关内容

  • 没有找到相关文章

最新更新