为何要领域驱动设计

简介: 领域驱动设计备忘录:  参考:https://www.cnblogs.com/cnblogsfans/p/4284462.html#undefined前言领域驱动设计最近貌似开始火起来了,越来越多的人开始认识到领域设计的重要性,从我做过的项目来看,似乎欧洲已经有很多的公司开始实施领域驱动设计了...

领域驱动设计备忘录:

  参考:https://www.cnblogs.com/cnblogsfans/p/4284462.html#undefined

前言

领域驱动设计最近貌似开始火起来了,越来越多的人开始认识到领域设计的重要性,从我做过的项目来看,似乎欧洲已经有很多的公司开始实施领域驱动设计了,我看领域驱动设计也有些时间了,但是网上不管是文章还是代码,都显得太过“高大上”,一谈领域驱动设计,一大堆的概念一股脑的给你上上来,搞的有点晕头转向,而我想在一些中小项目实施领域驱动也遇到了不小的障碍,大家对很多东西都处于一种恐惧的状态,而且在正真开始实施时,也遇到一些疑问,所以也想和大家交流学习,因此开始在此写写对领域驱动的理解,后面会有一些轻量的演进代码。

为何要领域驱动设计?

领域驱动设计有很多原因,谈到我为啥要在公司推行领域驱动设计,说起来还是很好玩的,因为原来基于数据驱动的开发方式,也就是传统的多层开发架构,大家定义了一堆DAL来操作数据, 在.Net大家一般有两种使用方式,一种是用ORM像Entity Framework, 另一种想使用Dapper这样轻量级的Mapping工具,这些都要把关系型数据转换为对象。结果导致以下几种结果。

  • 没有正确的使用ORM, 导致数据加载过多,导致系统性能很差。
  • 为了解决性能问题,就不加载一些导航属性,但是却把DB Entity返回上层,这样对象的一些属性为空,上层使用这个数据时根本不知道什么时间这个属性是有值的,这个是很丑陋的是不是?
  • 如是又开始使用一些轻量级的数据方法,比如使用Dapper然后自己写SQL语句,这本来是很不错的方式,但是大部分人的SQL能力实在不敢恭维,大部分写出来的SQL语句,甚至比EnityFramework生成的语句还差。

所以,我就想我们做项目,大部分处理的应该是业务,如何让程序员从数据存储,模型转换的大泥潭里解放出来,领域驱动设计就进入了我的视线,当然光从数据这个角度还不足以选择领域驱动设计,用一个NoSQL数据库是不是就解决了? 但是NoSQL也有一些问题,比如MongoDB如何更优雅的保证事务以及数据的一致性等。

更多了解上下文

我们很多软件的问题,大家都知道是需求的问题,也就是客户的需求我们很难理解准确,导致程序员更加关注"HOW" 而忽略了"WHAT", 最终做了几个礼拜甚至更长时间,结果客户会说:"What?! I told you", 但是客户告诉我的,我们理解是不一样的。比如客户说:“ Great job, I love you!” 这个Love肯定不是男女之间的Love, 我们拿到的是一个客户的需求,他的上下文是什么? 比如说:“这个球打的好”, 如果是在打篮球,肯定说的事篮球,如果是在打乒乓球肯定说的是乒乓球。 而领域驱动设计里我们可以让业务人员更多的参与系统,更早的参与系统。

 

墨匠
目录
相关文章
|
7月前
|
人工智能 运维 Cloud Native
Argo Workflows at KubeCon Europe 2025: 多元场景的云原生任务编排
Argo Workflow在KubeCon Europe 2025展示了其在AI/ML/HPC任务、事件驱动、平台工程、批量数据处理、混沌测试等多元场景的云原生任务编排能力。
|
开发框架 前端开发 JavaScript
微信小游戏案例三 抓星星
微信小游戏案例三 抓星星
286 0
微信小游戏案例三 抓星星
|
存储 负载均衡 监控
大数据散列分区数据分布
大数据散列分区数据分布
171 1
|
11月前
|
存储 Java API
【JavaEE】——文件IO(万字长文)
文件路径,文本文件,二进制文件,File类,文件流,字节流(InputStream,OutputStream)字符流(Reader,Writer)
|
监控 安全 测试技术
CVE-2022-37434漏洞如何处理
【6月更文挑战第18天】CVE-2022-37434漏洞如何处理
1648 0
|
安全 网络安全 数据安全/隐私保护
更改ip后还被封是ip质量的原因吗?
在网络安全、数据抓取及测试领域,代理IP至关重要。然而,市场上的代理IP质量参差不齐,选择优质代理IP成为一大挑战。本文从可用性、响应速度、稳定性、价格、安全性等多个维度出发,提供了详尽的选择指南。通过综合评估这些关键因素,并结合实际需求与试用体验,帮助您挑选最适合的服务商,确保高效、安全地完成工作任务。
|
存储 分布式计算 Hadoop
一文了解Apache Hudi架构、工具和最佳实践
一文了解Apache Hudi架构、工具和最佳实践
4229 0
芯片人必会的task与function区别详解【Verilog高级教程】
芯片人必会的task与function区别详解【Verilog高级教程】
芯片人必会的task与function区别详解【Verilog高级教程】
|
JSON API 数据格式
如何用最最最简单的方式理解一个FastAPI程序?
如何用最最最简单的方式理解一个FastAPI程序?
570 1
如何用最最最简单的方式理解一个FastAPI程序?
|
存储 SQL 负载均衡
大数据时代下的存储技术---数据库设计规范
数据库设计是整体软件应用系统的根基,必须受到高度重视。培养良好的数据库设计习惯,是一个合格软件工程师应该必备的基本素质。
1348 0
大数据时代下的存储技术---数据库设计规范