写点什么

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

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

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

关注

评论 1 条评论

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

怎样做YashanDB容灾备份策略,保障数据安全

数据库砖家

怎样做YashanDB实现数据分片优化存储

数据库砖家

YashanDB数据库安装与配置的详细步骤

数据库砖家

优化YashanDB的存储成本

数据库砖家

YashanDB实现多用户并发控制的技术分析

数据库砖家

怎样做YashanDB实现数据库资源自动扩展

数据库砖家

怎样做YashanDB数据导入导出,提升操作便捷性?

数据库砖家

YashanDB数据加密技术应用

数据库砖家

怎样做YashanDB数据库日志分析提升系统稳定性

数据库砖家

怎样做YashanDB融合区块链技术保障数据安全

数据库砖家

怎样做YashanDB数据库负载均衡实现高性能?

数据库砖家

怎样做YashanDB利用机器学习优化查询性能

数据库砖家

如何配置YashanDB连接池以提升应用响应速度

数据库砖家

YashanDB数据库开发环境搭建详细指南

数据库砖家

如何配置YashanDB连接池以提升应用响应速度

数据库砖家

怎样优化YashanDB的架构设计?

数据库砖家

怎样做YashanDB版本回滚,保障业务不受影响

数据库砖家

怎样做YashanDB高并发处理,保障业务流畅运行?

数据库砖家

怎样做YashanDB容灾备份,保障业务连续性

数据库砖家

怎样做YashanDB数据接入标准流程,确保高效稳定

数据库砖家

原点安全入选中国信通院《数字安全护航技术能力全景图》多个细分领域

原点安全

数据安全 中国信通院 数据安全平台

怎样做YashanDB读写分离,提高访问效率?

数据库砖家

怎样做YashanDB实现数据库高可用架构

数据库砖家

YashanDB数据库版本更新与兼容性管理指南

数据库砖家

YashanDB定制化报表开发实用技巧

数据库砖家

订单初版—支付和履约实现的重构文档

电子尖叫食人鱼

架构

怎样做YashanDB二级索引配置,加快查询速度

数据库砖家

怎样做YashanDB日志分析,快速定位故障根因

数据库砖家

YashanDB数据库定期维护和优化计划

数据库砖家

如何进行YashanDB数据库的批量导入导出数据操作

数据库砖家

怎样做YashanDB数据库容量规划技巧

数据库砖家

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