写点什么

别把领域驱动开发给用错了

  • 2015-04-28
  • 本文字数:727 字

    阅读完需:约 2 分钟

通常,有很多的应用声称是用领域驱动开发(DDD)构建出来的,并且有一个领域模型,但是这个模型实际上却仅仅包含业务实体,甚至于分离数据和逻辑的数据传输对象和服务都混合在了一起,其中也分不清业务和基础设施逻辑, Gabriel Schenker 分享了从事咨询和软件架构以来的个人经验。在具有消息处理的应用中,很少用业务领域中名称来命名消息,反而采用了以_update_ 或_modify_ 结尾的这种统称。

Schenker 目前是一位首席软件架构师,他说这一点儿都不夸张,他本人就常常发现早期的新应用就是这么构建出来的。Schenker 认为,这一现象的主要原因就是由于缺乏知识。

Schenker 强调说,如果采用 DDD 开展工作可以参考 Eric Evan 的 DDD 专著,但其中的所有模式的重要程度并不是安全相同的,特别是要注意这本书中后面部分的 DDD 基础,有些已经得到了 Evans 的充分肯定。与这些策略模式形成鲜明的对比的是,上半部分中的战术模式重点关注于实现的细节。

Schenker 建议说,当使用 DDD 开始一个新项目时,首先应和领域专家对业务领域达成一致的理解,把讨论中的术语抽取出来,大家共同商定创建一个通用的词汇表,在 DDD 术语中这叫做统一语言。让领域专家识别彼此间分离的区域,把复杂的领域予以分解,从而创建子领域或有边界的上下文,嘿嘿,这又是另一个DDD 术语。

Schenker 还告诫说,不要以数据模型开始创建一个以数据为中心的世界。他坚信,孤立的数据什么都不是,数据若想有意义就离不开逻辑,而且还要注意上下文的变化,所以,上下文和逻辑应该是 DDD 的主要关注点。专注于数据还有另一个风险,数据库最终会用于集成,实际上这从另一方面增加了上下文间的依赖。Stefan Tilkov 也于近期建议避免采用通用的数据模型。

查看英文原文: Domain-Driven Design the Wrong Way

2015-04-28 07:142736

评论

发布
暂无评论
发现更多内容

中文技术文档的写作规范参考

小 he

拆分电商系统为微服务

Geek_7d539e

架构实战营10期-作业7

炮仗

vue组件通信方式有哪些?

bb_xiaxia1998

Vue

React源码分析1-jsx转换及React.createElement

goClient1992

React

React源码解读之React Fiber

flyzz177

Portraiture2023最新版本下载安装图文教程

茶色酒

Portraiture Portraiture4

建议收藏,轻松搞懂区块链!

蔡农曰

比特币 区块链 后端 比特币区块链

CnosDB成为首个产品支持SQLancer的云原生时序数据库

CnosDB

时序数据库 开源社区 CnosDB 工程师有话说

腾讯前端经典react面试题(附答案)

beifeng1996

React

vue这些原理你都知道吗?(面试版)

bb_xiaxia1998

Vue

手撕常见JS面试题

helloworld1024fd

JavaScript

美团前端一面手写面试题

helloworld1024fd

JavaScript

云计算未来 5 年发展方向大盘点

亚马逊云科技 (Amazon Web Services)

人工智能

JavaScript刷LeetCode心得

js2030code

JavaScript LeetCode

前端工程师leetcode算法面试必备-简单的二叉树

js2030code

JavaScript LeetCode

阿里前端经典react面试题集锦

beifeng1996

React

面试官让你说说react状态管理?

beifeng1996

React

ElasticSearch _bulk 使用与实战:批量操作、查询、冲突(模拟电商下单/查询)

alexgaoyh

批量操作 Elastic Search 关联查询 _bulk retry_on_conflict

能否手写vue3响应式原理-面试进阶

helloworld1024fd

JavaScript

社招前端必会手写面试题集锦

helloworld1024fd

JavaScript

React Context源码是怎么实现的呢

flyzz177

React

美团前端一面高频vue面试题整理

bb_xiaxia1998

Vue

React源码分析(二)渲染机制

goClient1992

React

应对ChatGPT,中国AI需要这三种能力

脑极体

百度 飞桨 文心

社招前端经典vue面试题(附答案)

bb_xiaxia1998

Vue

ReactDOM.render在react源码中执行之后发生了什么?

flyzz177

React

LeetCode:240. 搜索二维矩阵 II,直接查找,详细注释

Lee Chen

JavaScript 算法 LeetCode

架构误区系列13:令人迷惑的继承

agnostic

继承

React源码分析(三):useState,useReducer

goClient1992

React

用javascript分类刷leetcode17.栈(图文视频讲解)

js2030code

JavaScript LeetCode

别把领域驱动开发给用错了_架构_Jan Stenberg_InfoQ精选文章