写点什么

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

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

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

关注

评论 1 条评论

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

解决苹果审核4.3问题的有效策略:尝试混淆或重新上架?用这招居然成功上架AppStore了!

Redis 容器化,是不是个“软柿子”?

小猿姐

redis 容器化

揭秘APP自动化测试中弹窗异常处理的技术要点

测试人

App 软件测试 自动化测试 测试开发 弹窗

如何爬出Kotlin协程死锁的坑?

阿里技术

Java kotlin 协程死锁

数据相关术语、英文翻译以及定义汇总看这里!

行云管家

数据 数据安全 企业数据

2024-04-17:用go语言,欢迎各位勇者莅临力扣城,本次的挑战游戏名为「力扣泡泡龙」。 游戏的起点是一颗形状如二叉树的泡泡树,其中每个节点的值代表该泡泡的分值。勇者们有一次机会可以击破一个节点泡

福大大架构师每日一题

福大大架构师每日一题

简单了解国密与信创的四大关系-行云管家

行云管家

信创 数据安全 国产化 国密

面试,有时候是个运气活

老张

面试 求职

以NFT起头的Berachain 有什么魔力?

币离海

区块链 NFT Berachain

通过独立网站的视觉设计策略优化进行品牌推广

九凌网络

基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.5版已发布

JackJiang

网络编程 即时通讯 IM

盘点|《数据安全法》的62项配套「国家标准」(附下载)

极盾科技

数据安全

再获权威认可!天翼云论文被IEEE/ACM CCGrid收录

天翼云开发者社区

云计算 私有云 云网关

云主机AI服务的性能测试和优化

天翼云开发者社区

云计算 AI 云服务 云主机

比特币L2项目主网密集上线:新业态背后的挑战与机遇

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

揭秘APP自动化测试中弹窗异常处理的技术要点!

测吧(北京)科技有限公司

测试

Advanced RAG 03:运用 RAGAs 与 LlamaIndex 评估 RAG 应用

Baihai IDP

AI LLM 企业号 4 月 PK 榜 rag 检索增强生成

深度解读《深度探索C++对象模型》之拷贝构造函数

爱分享

c++ C++对象模型 C++拷贝构造函数 C++虚函数 C++虚继承

使用 Docker 部署 instantbox 轻量级 Linux 系统

不在线第一只蜗牛

Docker Linux 容器

阻碍团队使用工具的原因竟然是……

BY林子

审计 度量

免费在线OCR识别工具TextIn Tools,开启智能学习新时代

合合技术团队

合合信息 OCR识别 文字处理 扫描全能王

DTC2024,华为云数据库创新融合大发展,打造世界级数据库!

华为云开发者联盟

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

网络审计:为什么定期检查您的网络很重要

天翼云开发者社区

云计算 网络安全 网络审计

利用1688.item_get API接口,快速定位智能手表新品,商品ID一键获取

技术冰糖葫芦

api 货币化 API 测试 pinduoduo API

Apache Doris 2.1.2 版本正式发布!

SelectDB

数据库 大数据 开源 实时数仓 Doris

【活动报名】WorkPlus AI助理沙龙——把AI装进企业,企业级AI落地场景分享

BeeWorks

中国服装品牌商品计划管理系统落地难题探究

第七在线

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