写点什么

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

  • 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:194066
用户头像

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

关注

评论 1 条评论

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

领域驱动设计(DDD): 三层架构到DDD架构演化

付威

领域驱动设计

R语言之数据导出

timerring

R 语言

ARTS 打卡第 2 周: 对比法在编程上的具体应用

前行

中小企业建站,采购云服务器上需注意什么?

YG科技

ARTS 打卡第 13 天

自由

ARTS 打卡计划

对话无服务器专家 Luca Mezzalira:你真的为 Serverless × AI 做好准备了吗?

亚马逊云科技 (Amazon Web Services)

Java 人工智能

Java仿抽奖系统

java易二三

Java 编程 程序员 计算机

安卓设备文件传输 MacDroid pro for mac激活中文

胖墩儿不胖y

文件传输 Mac 软件 传输文件

Presto 设计与实现(七):Event

冰心的小屋

数据湖 Event presto presto 设计与实现

金融场景的“四边形战士”,容联云赤兔大模型向行业飞驰

脑极体

金融 AI大模型

AI+SaaS,会是微盟们的新法器吗?

自象限

龙蜥社区标准化SIG举行线下社区标准研讨会,助力开源社区规范发展

OpenAnolis小助手

操作系统 龙蜥社区 硬件兼容性 质量测试 标准化 SIG

流程图&时序图绘制小tips

得物技术

流程图 UML 画图 企业号 8 月 PK 榜

精彩回顾 | CommunityOverCode Asia 圆满落幕

Apache IoTDB

谁能代表中国软件的未来

B Impact

C++函数重载

芯动大师

快速构建商业模式,企业在云服务器选购上有什么需要注意的?

轶天下事

代码随想录Day50 - 动态规划(十一)

jjn0703

鹏云网络入选中国信通院《高质量数字化转型产品及服务全景图(2023)》

鹏云网络

数字化转型 云服务 分布式存储 信通院 分布式块存储

初创公司预算有限,在云服务器选择上应该如何选择?

YG科技

电商秒杀系统架构设计

艾瑾行

架构训练营

DaVinci Resolve Studio 18 for Mac 18.5.1中文激活版

mac大玩家j

达芬奇18破解版 达芬奇18 视频调色软件

超越边界:FaaS 的应用实践和未来展望

SOFAStack

Serverless 架构 开发 Faas 函数

蚂蚁 SOFAServerless 微服务新架构的探索与实践

SOFAStack

Serverless 微服务 开发 应用架构

创建web应用程序,React和Vue怎么选?

没有用户名丶

企业新业务拓展,云耀云服务器L实例能否助其进行快速开发

YG科技

Java函数式编程 :为什么要关心Java8

java易二三

Java 编程 程序员 计算机 科技

HarmonyOS元服务开发实践:桌面卡片字典

HarmonyOS开发者

HarmonyOS

我是如何使用Spring Retry减少1000 行代码

小小怪下士

Java spring 程序员

服务质量不能掉链子,中小企业采购云服务器为何更要选择大厂?

YG科技

采购云服务器安全与成本不可兼得?云耀云服务器L或许可以了解一下

轶天下事

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