本片将介绍以下内容:

1).DDD是什么?

2).怎么使用DDD?

3).使用DDD应该规避或者注意什么?

一.DDD是什么?

简言之:领域驱动设计(domain driven design),顾名思义,着重点在领域,这里的领域指的就是具体的业务领域,一个业务可以是一个领域或者多个子领域,每个领域中包含多个子域.具体的实现更偏重于具体的业务知识,而不是技术的细节,说白了技术无关性了.

2. 我们如何开始?

开始使用需要领域专的参与,需要领域专家对相应领域的业务分析,分析过程要注意 限界上下文:

1.核心域

整个业务的核心领域并划分限界上下文

2.支撑域

支撑其他域的域,,,,好像有点蛋疼的说法,举个栗子:假设当前系统为电商系统,其中涉及到订单这个核心模块,这个订单就可以独立成一个核心域,但是问题来了,订单会涉及到用户信息,以及用户账户是否正常是否被冻结等权限的判断,那么这个用户的信息的内容可以独立成一个子域,但是还一个问题,不只是订单会用到用户信息,留言\评论\等等都会用到吧,那么到这里就很明显了,这个就是所谓的支撑域了

3.通用域

顾名思义,通用的模块或者功能或者插件或第三方成熟的功能等等,比如,ids4.日志,中介插件,熔断重试等等

3.使用DDD应该规避或者注意什么 ?

DDD实现,另一方面,在我们我们需要注意点。这些都是:

1)使用一个以数据为中心的视图建模时的问题域

通常,数据模型的第一件事是一个架构师/开发人员将开始设计。他们总是认为数据是最重要的,因为数据是我们需要报告。如果你开始与DDD,必须改变这种心态。数据本身是没有意义的。只有逻辑给数据意义,相同的数据可以在不同的上下文中有不同的含义。因此,我们必须从上下文和逻辑,而不是数据。

2)专注于实现细节等实体、值对象、服务、工厂、和存储库的核心概念

实体、值对象存储库等等没有意义,直到我们定义了通用语言,有界的情况下,合同/制作软件的接口。如果我们开始早期与实体等实现细节,这是个好机会,结果将是一个域周围很多服务和业务逻辑分散无处不在。

3)使用泛型和Developer-Specific术语和概念在实现应用程序

我们不应该使用概念,比如保存、更新、删除、处理、管理、等。这些概念太技术——抽象的概念,没有具体的意义。相反,我们必须专注于业务概念。上述的概念(即保存、更新等)不相关的业务概念。要理解这一点,我总是鼓励自己想象没有电脑客户端运行他的差事/业务(手动做特定的任务)。所以,总是想从业务/领域专家的角度来看,和给一个明确的上下文。避免通用术语,可导致不同的含义在不同,非特异性背景。

4)高估了数据库事务,而不是专注于业务流程或事务

在DDD,商业交易比DB更重要的事务。数据库事务是ACID(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),和短时间运行的,而商业交易。事实上,在现实生活中,我们不知道数据库事务,了解业务事务。例如,想象一下当你坐在餐厅,点一些食物或饮料。在订单事务,实现与否,将会有一个过程与一些异步任务很多可能的变化不一致的状态;但最后,所有状态都将一致(最终一致)。因此,与DDD,永远不要考虑数据库事务。相反,总是思考现实世界的过程,如行为和可能的结果,如果发生失败如何弥补该行为或结果。

html 定义列表dddt,DDD - 概述 - (一)相关推荐

  1. html 定义列表dddt,一个微服务+DDD(领域驱动设计)的代码结构示例

    前有幸拜读过诸多大神关于DDD的实现落地等文章,学习较多,受益匪浅,在此推荐 : 下面参考了DDD官方的结构,总结了前辈们的相关经验,再根据自身对微服务和DDD学习和理解,做了一个用SpringClo ...

  2. html 定义列表dddt,TDDD 文件扩展名: 它是什么以及如何打开它?

    了解 TDDD 问题 打开 TDDD 文件的问题 缺少 Impulse Imagine 你尝试加载 TDDD 文件并收到错误,例如 "%%os%% 无法打开 TDDD 文件扩展名" ...

  3. 电子工程术语和定义列表

    按字母顺序排列: 电子工程术语和定义列表,按字母顺序排列 1-Wire 单线(加地线)通信协议. 更多信息,请参考: 1-Wire存储器产品 1-Wire接口方案 1-Wire软件工具 1-Wire ...

  4. SharePoint 2013 图文开发系列之代码定义列表

    在SharePoint的开发中,用Visual Studio自定义列表是经常会用到的,因为很多时候,我们并不会手动创建列表,而手动创建列表在测试服务器和正式机之间同步字段,也很麻烦,所以我们经常用代码 ...

  5. bootstrap 列表--水平定义列表

    水平定义列表就像内联列表一样,Bootstrap可以给<dl>添加类名".dl-horizontal"给定义列表实现水平显示效果. @media (min-width: ...

  6. 6、HTML有序列表+无序列表+定义列表

    在网站开发过程中,我们经常会使用到列表(list).列表可以将若干条相关的内容进行整理,让内容看起来更加有条理. HTML 为我们提供了 3 种不同的列表: 有序列表 无序列表 定义列表 1. 有序列 ...

  7. 定义列表的特点html,HTML的列表表格表单知识点

    无序列表格式                                                                                              ...

  8. 前端学习(177):定义列表

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/str ...

  9. HTML标签的基本使用:无序列表、有序列表、定义列表

    无序列表.有序列表.定义列表 列表是由一组标签组成 一.无序列表 没有顺序的列表结构 由ul和li标签组成 ul:unordered list(无序列表) li:list item(列表项) < ...

最新文章

  1. mysql 基于集_一种基于记录集查找特定行的方法_MySQL
  2. docker 虚拟机搭建mongodb一主一从一复制_Docker最全教程——MongoDB容器化(十三)...
  3. tomcat配置多个web网站的配置详解
  4. 【问链财经-区块链基础知识系列】 第二十六课 隐私保护方法:多方安全计算和区块链
  5. 自己做网站,论坛类型的
  6. tf.train.Coordinator和tf.train.start_queue_runners
  7. java 注册页面正则式_Java使用正则表达式对注册页面进行验证功能实现
  8. java由谁创建_透析Java本质-谁创建了对象,this是什么
  9. 关于BinaryFormatter
  10. PSP2000远程无线连接控制电脑
  11. abcde类 ip地址_IP寻址基础,让你了解IP地址ABCDE类的区分
  12. java reader类子类_java io --- Reader类
  13. centos 切换终端_centos进入不同终端的几种方法
  14. js中的Image对象
  15. C语言中三个数比较大小详解——三种方法
  16. idea的简单使用,初始化过程
  17. 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
  18. Frenet坐标系及其与笛卡尔坐标的转换(2)——原理
  19. JSP页面的初步编写
  20. 一次应用访问数据库 IP 配成外网 IP 引发的血案

热门文章

  1. 人工智能/机器学习/深度学习:学习路线图
  2. 在word中插入excel文件
  3. Mac快速还原最小化窗口
  4. 【观察】并非所有桌面云DaaS都一样,思杰Citrix有何神奇魔力?
  5. 简历中的项目经历怎么写?
  6. BUGKU--web详解
  7. 当我们谈论基因,我们在谈论什么
  8. 组织级项目管理推广经验
  9. java设置打印机默认纸张_java 打印设置打印A4 A5纸
  10. mapping.xml POJO的映射文件