MVC vs DDD

  • MVC

在MVC架构中,控制器负责决定流量的传递路径,从用户请求开始,通过控制器、模型和视图之间的协作,最终将结果返回给用户。控制器作为中心协调器,负责控制整个流程的顺序和逻辑。

1、控制器(Controller)接收到前端发送的HTTP请求。控制器主要负责解析请求参数、验证输入,并将请求转发给相应的服务。

2、模型(Model)是应用程序中的核心部分,它包含业务逻辑和数据。控制器将请求传递给模型,并调用相应的方法来执行业务逻辑。模型可以从数据访问层获取数据,对数据进行验证和处理,并返回结果给控制器。
  • DDD

DDD强调以业务为核心,通过将业务逻辑封装在领域模型中,并在不同层之间使用明确的边界和接口进行交互,以实现更好的可维护性和可扩展性

1、应用服务层(Application Service):应用服务层类似于服务层[多个DO],在这里处理外部请求并协调领域对象的操作。它负责将请求转发给相应的应用领域服务,并处理领域对象之间的协作和交互。

2、领域层(Domain Layer):领域层是业务逻辑的核心,类似于业务逻辑层[一个DO,多个data接口]。它包含领域模型(Domain Model)和领域服务(Domain Service)。领域模型是用于解决特定领域问题的对象模型,其中包括实体(Entity)、值对象(Value Object)、聚合根(Aggregate Root)等概念。领域服务是没有状态的操作,用于完成跨实体或聚合根的操作。

3、基础设施层(Infrastructure Layer):基础设施层类似于数据访问层(data)[现实一个data接口],它负责与外部系统进行交互,包括数据库、缓存、消息队列等。基础设施层提供对这些外部系统的访问封装,并为领域层提供必要的技术支持。

4、应用领域服务(Application Domain Service):应用领域服务是应用服务层和领域层之间的接口,负责协调应用服务和领域模型之间的交互。它将请求从应用服务层传递给领域模型,并根据需要执行一些额外的业务操作。

请求处理流程: 请求从应用服务层进入,经过应用领域服务的处理后传递给领域层,领域层根据领域模型和领域服务进行业务逻辑的处理,可能涉及到领域对象之间的交互和数据的访问。最终,结果通过应用领域服务返回给应用服务层,然后返回给客户端。