领域驱动的事实与谬误 一 DDD 与 MVC
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
本文有以下几个目的:
MVC到底在说什么MVC(Model-View-Controller)架构由挪威计算机科学家Trygve Mikkjel Heyerdahl Reenskaug于1979年在施乐帕克研究中心(Xerox PARC)访问期间提出。这一架构最初是为Smalltalk编程语言设计的,旨在解决图形用户界面(GUI)开发中数据管理与用户交互的复杂性问题。当时Smalltalk的GUI需要支持动态交互(如用户操作实时更新数据),传统单体架构难以维护,MVC通过解耦输入-处理-输出流程,首次实现了界面与逻辑的分离。 Reenskaug认为,GUI应用需要将不同功能模块解耦,以应对数据复杂性和用户交互的动态性。他提出将软件系统划分为三个核心组件:
MVC的Model本身包含基础业务逻辑(如数据验证),但复杂业务场景下需独立的应用逻辑层(如Service层)来组织流程,这与DDD的领域建模形成互补。因此,四层架构(Model-View-Controller-Service)的出现是企业级开发的演进,而非MVC原生缺陷。 DDD到底在说什么DDD由Eric Evans 在2003年出版的经典著作《领域驱动设计:软件核心复杂性应对之道》中系统提出。其诞生源于对复杂业务系统开发困境的反思:
DDD与MVC并不冲突在传统MVC架构下,解决GUI问题时,我们会设计GUI层面的技术模型,再根据模型渲染界面。同理,解决业务逻辑问题时,也可以设计一个领域模型,再基于模型开发业务逻辑。 从图中不难看出:领域驱动设计的核心是教你如何设计业务逻辑, 注意,是"业务逻辑设计",而非技术分层设计。原因很简单:DDD原书明确指出,这不是一本教你写代码的书,而是教你如何应对复杂软件的方法论。 无论哪个层面的技术开发,都可以先建模,再基于模型开发, 这是几乎所有行业都在使用的通用手段。 DDD本来就不存在统一的代码规范,原书也未给出具体实现手段回到上图,你会发现:任何一个技术维度的修改,都不需要其他维度的直接支持,甚至可以单独调整某个维度------这正是DDD在战术设计上想表达的理念。但这部分内容被放在原书的最后章节,不仅因为前面的章节是前提,更因为代码架构并非DDD的核心。 DDD的核心是什么?
代码规范的真相 : DDD不强制规定具体代码结构和命名,但业界基于实践形成了通用分层原则(如四层架构:表现层、应用层、领域层、基础设施层)。例如:
争议与选择 : 业界关于代码结构的最大争议是按功能分包 vs 按技术层分包:
附录一些可以参考的代码和技术文章转自https://www.cnblogs.com/mrye/p/18856880 该文章在 2025/5/7 9:12:07 编辑过 |
关键字查询
相关文章
正在查询... |