写点什么

从数据驱动开发到领域驱动设计的经验

  • 2013-10-18
  • 本文字数:840 字

    阅读完需:约 3 分钟

Julie Lerman 对于领域驱动设计(DDD)深感着迷并且倍受启发,但在数据驱动开发方面的长期经历,使她在理解如何在 DDD 中使用自己技能的道路上,不断的挣扎、争论又满腹辛酸。Julie 自 2003 年起成为微软MVP ,作为顾问和导师从事.NET 平台方面的工作。她认为,或许由许多开发者都遭受了同样的痛苦,因此在MSDN 杂志上撰写了三篇文章来分享她所学到的经验教训。

Julie 强调,DDD 适用于复杂行为——并不是应用的每个部分都会包含这样的问题。对于应用中仅仅涉及简单的创建、读取、更新和删除(CRUD)的部分,我们或许最好采用非 DDD 的实现方式,但对于复杂行为和 CRUD 的结合部分,Julie 建议识别出复杂部分,并将其分解为独立的有界上下文,并对它们运用 DDD。

当进入 DDD 并对某个领域建模的时候,Julie 会聚焦于业务,研究所需的任务和行为。数据持久性与业务问题无关,因此它应该扮演支持的角色,而不是去干预领域设计。

Julie 遇到的那些麻烦中的一个主题,是在子系统之间分享类型和数据。在她看来,分享类型一直是强制性的,对同一个数据库中的相同表进行操作也是如此。DDD 让她学到,不分享某个领域模型也可能是完全没问题的,因此可以将来自不同子系统的数据的相同类型,存储在不同的表和数据库中。复制数据并不是一种过错,从长期来看,由于移除了分享数据的复杂性,这或许会简化我们的系统。

在她最后一部分分享中,Julie 讨论了一些使用 ORM 工具的过程中出现的问题——她使用的是实体框架。其中一个问题是单向关系,这是使用DDD 时的首选关联方式。最初的 DDD 书籍作者 Eric Evans 的建议是,“尽可能地约束关系是非常重要的”。对 Julie 来说,自打开始使用实体框架以来,双向关系一直是一项规范。然而现在她发觉,尽管双向关系很方便,但在领域中鲜有实际需求,而省去双向关系将会移除关系管理中的部分复杂性。

Julie 的文章还给出了一段用 C#和实体框架(微软用于.NET 平台的对象关系映射工具)编写的例子。

查看英文原文: Experiences Going From Data-Driven Development to Domain-Driven Design

2013-10-18 02:194281
用户头像

发布了 256 篇内容, 共 82.1 次阅读, 收获喜欢 10 次。

关注

评论 1 条评论

发布
用户头像
不知所云
2019-08-01 09:32
回复
没有更多了
发现更多内容

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

西柚子

万界星空科技电线电缆行业生产管理智能化MES

万界星空科技

mes 万界星空科技 电线电缆行业 电线电缆mes

宝尊将于2024年5月28日发布2024年一季度未经审计财务业绩

财见

金蝶发布AI管理助手 重构苍穹AI平台

人称T客

企业级小程序技术平台与中间件提供商凡泰极客完成近亿元B轮融资

FN0

小程序 小程序化

公司里的“卷王”,是主动选择还是迫于无奈?

伤感汤姆布利柏

一文读懂 Pencil 积分,打开 Pencils Protocol 生态权益大门

西柚子

中国科学家颜宁荣膺2024欧莱雅-联合国教科文组织“世界杰出女科学家成就奖”

财见

软件测试学习笔记丨MyBatis 多条件查询和模糊查询

测试人

软件测试

2024/25 奥特斯再度迈入增长之路

财见

一键自动化博客发布工具,用过的人都说好(51cto篇)

程序那些事

工具 自动发布

什么是ARP攻击,怎么做好主机安全,受到ARP攻击有哪些解决方案

德迅云安全杨德俊

Python最容易犯的五个错误,你中了几个?

我再BUG界嘎嘎乱杀

Python 编程语言 开发语言

MySQL 给用户添加 ALTER VIEW 的权限

华为云开发者联盟

MySQL 数据库 华为云 华为云开发者联盟 企业号2024年5月PK榜

MyBatis如何通过拦截器修改SQL

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

vivo蓝心大模型登陆火山方舟,一站式方案实现智能普惠

新消费日报

百度百舸 AIAK-LLM 的大模型训练和推理加速实践

Baidu AICLOUD

训练 推理 大模型

不容错过的邀请:《哈利·波特》全系列中英文版本上线华为阅读

最新动态

数据库索引回表困难?揭秘PolarDB存储引擎优化技术

阿里云瑶池数据库

数据库 阿里云 polarDB 分布式,

8000-12000奖金等你拿,OpenTiny 开源之夏10大导师齐上阵,带你立刻get 项目详情!!!

OpenTiny社区

Vue 前端 低代码 组件库 OpenTiny

结合多模态 AI 谷歌展示 AR 眼镜原型机;Meta 被曝开发带摄像头的 AI 耳机丨 RTE 开发者日报 Vol.204

声网

奖金+1 万,OpenTenBase 开源核心贡献挑战赛,KB 专家助力其跑在 K8s 上

小猿姐

开源 Kubernetes

Python在物联网中的应用

技术冰糖葫芦

Altair 宣布收购 Research in Flight,为空气动力学分析开辟新途径

财见

从数据驱动开发到领域驱动设计的经验_语言 & 开发_Jan Stenberg_InfoQ精选文章