把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

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

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

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

关注

评论 1 条评论

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

活动报名:Voice Agent+硬件分享会,深圳专场丨RTE Meetup 007

RTE开发者社区

地平线 LiDAR-Camera 融合多任务BEVFusion参考算法-V1.0

地平线开发者

自动驾驶 算法 地平线征程6

数字孪生项目开发的技术框架

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

AIP智能体平台与CrewAI平台的对比

大东(AIP智能体运营专员)

人工智能

ROS核心概念解析:从Node到Master,再到roslaunch的全面指南

芯动大师

Node ROS process

懒猫微服必用应用

玄兴梦影

NAS 必用应用 懒猫微服

AI视频编辑软件Topaz Video AI for Mac 激活版

小玖_苹果Mac软件

强大的应用程序加密工具Cisdem AppCrypt for mac激活版

小玖_苹果Mac软件

超赞的矢量图绘制工具 EazyDraw for Mac激活版

小玖_苹果Mac软件

M5Stack 发布全双工通信语音识别硬件;雷蛇发布 AI 游戏伴侣 Project AVA,实时指导复盘

RTE开发者社区

探索AIP智能体平台:引领软件开发的未来

大东(AIP智能体运营专员)

人工智能

2025-01-11:求出最长好子序列Ⅰ。用go语言,给定一个整数数组 nums 和一个非负整数 k,我们需要找出满足特定条件的子序列。 具体来说,如果一个整数序列 seq 在下标范围 [0, seq

福大大架构师每日一题

福大大架构师每日一题

原生鸿蒙第一个出圈的,为什么是安全?

脑极体

AI

文件夹个性化图标修改软件Folder Icons for Mac 激活版

小玖_苹果Mac软件

EazyDraw for Mac(矢量图绘制软件)v11.10.1中文版

小玖_苹果Mac软件

AI 口语对话机器人的技术难点

北京木奇移动技术有限公司

AI技术 软件外包公司 AI口语练习

ROS通信机制全解析:Topic、Service、Parameter Service和Actionlib的核心原理与应用

芯动大师

ROS2 TOPIC

1集13个广告、40家赞助商,《国色芳华》让芒果TV赚翻了?

趣解商业

互联网 影视 芒果TV

AIP智能体平台:开启智能软件开发新时代

大东(AIP智能体运营专员)

人工智能

《CPython Internals》阅读笔记:p76-p95

codists

CPython Internals

AI 智能体(AI Agent)的应用场景

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI技术应用

AI技术在英语学习中的应用

北京木奇移动技术有限公司

英语学习 AI技术 软件外包公司

触控板增强软件Bettertouchtool for Mac中文激活版

小玖_苹果Mac软件

强大的磁盘清理软件DaisyDisk for Mac中文激活版

小玖_苹果Mac软件

数据库管理软件SQLPro for SQLite for Mac激活版

小玖_苹果Mac软件

AIP智能体平台:开启AI Agent新时代

大东(AIP智能体运营专员)

人工智能

AI智能体的开发流程

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI口语练习

音乐 NFT 开发的详细流程

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

智能抠图软件Aiarty Image Matting for Mac激活版

小玖_苹果Mac软件

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