22.DDD与MVC

学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid=1940048\&ctype=0

文章目录

MVC

View负责生成给用户查看和操作的页面,并把用户的操作翻译给Controller,Controller翻译用户执行动作给Model。Model负责业务处理,提供View渲染需要的数据。

DDD六边形架构

这种架构本质上是只分两块,领域核心和非领域核心。

MVC和DDD的关系

MVC和DDD二者是没有关系的 。MVC是解决应用程序中业务逻辑、数据和界面显示的耦合问题,使得开发和维护更加清晰和简单‌。DDD是解决业务逻辑问题。一个软件系统中可以使用DDD+MVC ,也可以使用DDD但不使用MVC(DDD-MVC ),也可以使用MVC但不使用DDD(MVC-DDD),也可以既不使用MVC也不使用DDD。

DDD+MVC

DDD+MVC架构中,Model的职责委托给领域核心和查询模型去实现。这种典型的架构有:

  • JSP(V)+ Servlet(C) + EJB(M)
  • JSP(V)+ Struts (C)+ Spring Bean(M)
  • JSF(V) +EJB(CM)
  • freemarker/thymeleaf/velocity(V) + Spring MVC(C) + Spring Bean(M)
    Mode功能使放在EJB和Spring Bean中实现。

DDD-MVC

  • 没有MVC,只有对外接口,用于接受外部请求。这里的接口一般是HTTP接口或者webSocket接口。
  • 处理请求被翻译成执行领域命令,有领域核心。
  • 在前端大发展之后 (Ajax React Vue) MVC在服务端就逐渐不流行了,用户交互都是交给前端执完成。

MVC-DDD

  • 有MVC
  • Model不使用领域模型,没有领域模块。
  • Model负责直接数据库操作,页面需要渲染需要哪个数据,就直接从数据库表里查。对页面进行操作的时候,也是直接翻译成对数据库进行操作。

事务脚本大泥球

既没有MVC,也没有DDD。这种架构虽然不好,但目前最为常见。用户交互都是交给前端去做,服务端不管。Dao相当于一条一条的SQL语句,Service是事务脚本,主要对这些SQL排个序,对查询结果进行组装。Contorller只是对Client的请求参数的翻译。这种架构也不是分层架构,因为Contorller、Service、Dao可能共用一些类等。如果将三者分别作为单独的JAR包,可能无法实现单向编译。

相关推荐
拾忆,想起15 分钟前
Dubbo动态服务发现配置指南:从基础到云原生实践
服务器·网络·微服务·云原生·架构·服务发现·dubbo
十月南城29 分钟前
MyBatis 进阶治理点——缓存、副作用、拦截与批处理的得失分析
后端·架构
是罐装可乐2 小时前
前端架构知识体系:通过发布-订阅者模式解耦路由和请求
前端·架构·vue·路由
云边云科技5342 小时前
企业SD-WAN选型指南:打造安全、体验至上的云网智联架构
网络·安全·架构·it·量子计算
weixin_307779132 小时前
Jenkins Branch API插件详解:多分支项目管理的核心引擎
java·运维·开发语言·架构·jenkins
milanyangbo2 小时前
从硬盘I/O到网络传输:Kafka与RocketMQ读写模型及零拷贝技术深度对比
java·网络·分布式·架构·kafka·rocketmq
小股虫2 小时前
消息中间件关键技术、设计原理与实现架构总纲
java·开发语言·架构
Hernon2 小时前
微服务架构设计:从零打造互联网车贷系统 —— 业务背景与架构蓝图
java·微服务·架构·微服务架构设计
绝无仅有2 小时前
Elasticsearch经典面试题案例分析
后端·面试·架构
绝无仅有3 小时前
面试实战:如何实现一个完整的项目从注册到登录的功能?
后端·面试·架构