【问题标题】:In a DDD oriented microservice the Infrastructure and Entities can be reused?在面向 DDD 的微服务中,可以重用基础设施和实体吗?
【发布时间】:2018-03-26 14:12:01
【问题描述】:

我正在考虑采用本文 (https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/ddd-oriented-microservice) 中描述的面向 DDD 的微服务架构。但我对数据访问和实体有疑问。

将域实体和数据访问权放入一个通用项目甚至是金块中是否有意义?因为我认为我会为每个服务多次重写相同的数据访问。

【问题讨论】:

    标签: domain-driven-design microservices data-access-layer entities


    【解决方案1】:

    TL;DR:没有。

    微服务应该使用 API 相互通信。

    两个原因:

    • 作为聚合根的微服务定义了清晰的事务边界。重用代码意味着可能会走捷径,避开前置条件、后置条件和不变检查。
    • 其次,代码共享会迫使您将对模型的更改与所有依赖的微服务集成在一起,这可能会破坏采用微服务的目的。拥有不同的 API 版本将帮助您逐步管理它。

    【讨论】:

      【解决方案2】:

      不管你是否使用 DDD,SOA 的四个原则是:

      • 服务有明确的界限
      • 服务是自治的
      • 服务共享架构和契约,而不是类
      • 服务基于策略互操作

      这样做的后果之一是服务永远不会共享它们的持久性。

      有关于服务边界如何与有界上下文对齐的讨论,但您可以从简单的开始并从一对一的对齐开始,并且有界上下文也是永远不会以任何其他方式暴露其持久性的东西,而不是使用合同。

      【讨论】:

        猜你喜欢
        • 2010-11-25
        • 1970-01-01
        • 2021-01-08
        • 1970-01-01
        • 1970-01-01
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多