《实现领域驱动设计》笔记——上下文映射图

一个项目的上下文映射图可以用方式来表示。比较容易的一种是画一个简单的框图表示两个或多个限界上下文之间的映射关系。该框图表示了不同的限界上下文在解决方案空间中是如何通过集成相互关联的。另一种更详细的方式是通过限界上下文集成的源代码实现来表示。

  上下文映射图为什么重要

  上下文映射图主要帮助我们从解决方案空的角度看待问题。

  

  假定你期望大泥球维护团队提供一套新的API。然而,他们却并不打算这么做,或者他们根本就不知道你的想法。此时你的团队和大泥球维护团队的关系变成了 客户方-供应方 的关系。由于大泥球团队决定维持现状,你的团队不得不陷入一种遵奉关系中。这样的关系可能导致你的项目延期交付或者彻底失败。

  尽早绘制上下文映射图,这样可以迫使你仔细思考你的项目和你所依赖项目之间的关系。

  绘制上下文映射图

  上下文映射图表现的是项目当前的状态,如果项目会在将来发生改变,你可以到那时才对上下文映射图做出相应的更新。关注于当前的项目状态可以帮助你了解你正处的位置,并帮助你决定如何走出下一步。

  绘制一个上下文映射图并不复杂。通常,首选在白板上手绘映射图,此时你可以采用 [Brandolini] 的风格。如果你打算使用一个绘图工具来绘制上下文映射图,请注意不要把图画得太正式了。

  上图3.1中,图中限界上下文的名字和彼此之间的集成关系只是占位符而已,在真实的上下文映射图中,我们将代之以实际的名字。

  有时,我们希望对上下文映射图的某些特定部分进行放大,以向里面加入更多的细节,这只是从另外一个角度来看待同一个限界上下文。除了边界、关系和翻译,我们可以可能希望加入其他的一些内容,比如模块、聚合,或者团队的分布信息等。

  所绘制的所有映射图,包括文字,都可以装订在同一份参考文档中,只要这对团队是有价值的。在这个过程中,我们应该避免那些繁文缛节性的仪式,保持简单和敏捷。向框图中加入过多的细节对团队并无多大帮助,交流才是关键,我们应该将交流对话也加入到上下文映射图中。

  

  上下文映射图并不是一种企业架构,也不是系统拓扑图。但是,它可以用于高层次的架构分析,指出诸如集成瓶颈之类的架构不足。上下文映射图展现了一种组织动态能力,它可以帮助我们识别出有碍项目进展的一些管理问题。

  并不是说限界上下文边界一定得密不透风,而是:对于任何上下文边界,开发团队都希望协作上下文能够完全地控制所进所出,还包括进出的原因。否则,该上下文便会出现一些不受欢迎的“拜访者”。对于模型而言,这些“拜访者”通常会导致混淆和BUG。建模人员应该是友好的,但是友好的前提是秩序与和谐。任何进入边界的外部概念都应该持有充分的理由,甚至需要和边界内的模型保持良好的兼容性。

  在理解充分的情况下,要绘制上下文映射图并不难,但是通常来说,我们并不会将映射图中的所有内容都显示出来。在迭代过程中,思考和讨论可以帮助我们改进上下文映射图,比如对集成点进行改进,这将有助于描述限界上下文之间的关系。

  拥有自治服务的应用程序并不表示需要将上游系统的数据库复制到下游系统。数据库复制将迫使本地系统承担过多的职责,它需要创建一个共享内核,而这并不是真正意义上的自治。

  处理不可用的一个 好办法是将其显现出来。

  使用资源可用性状态的好处并不只是技术上的,还有商业上的。

  需要记住的是,对于一个非常详细的上下文映射图,我们很有可能无法对其进行实时更新。

文章转载自:Ruby_Lu

原文链接:https://www.cnblogs.com/afei-24/p/17848031.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/163676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软WHQL认证

windows驱动开发要摆脱在测试模式下的开发,需要通过WHQL认证。 1:申请EV代码签名证书。EV代码签名证书在后续注册Windows硬件开发中心帐户,以及提交WHQL认证前为驱动程序进行数字签名等流程中都需要用到,所以申请EV代码签名证书是…

BUUCTF [SWPU2019]我有一只马里奥 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。 密文: 下载附件,得到一个.exe文件。 解题思路: 1、双击.exe文件运行,得到一个1.txt文本。打开,如下图。 2、提示我们…

Mysql中正则表达式Regexp常见用法

Mysql中正则表达式Regexp常见用法_regexp不包含-CSDN博客

当老师应该选文科还是理科

教育不断发展和改革,教师职业的选择也越来越受到关注。许多人在选择专业时都会考虑成为一名教师,但对于选择文科还是理科却感到困惑。本文将探讨当老师应该选文科还是理科。 文科注重的是人文素养和社会科学方面的知识,而理科则注重自然科学和…

如何做一个简单的深度集成学习框架

使用同一个框架,独立在一个数据集上面,分别训练多次,每个单独模型训练超参数可以一样,也可以不一样,最后若干个训练好的独立模型在测试集数据上面做最后集中决策。 实例代码如下: class MyEnsemble(nn.Modu…

每天5分钟复习OpenStack(十)Ceph 架构

1、Ceph是什么? “Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.”这句话说出了Ceph的特性,它是可靠的、可扩展的、统一的、分布式的存储系统。Ceph可以同时提供对象存储RADOSGW&am…

基于 Flink SQL 和 Paimon 构建流式湖仓新方案

本文整理自阿里云智能开源表存储负责人,Founder of Paimon,Flink PMC 成员李劲松在云栖大会开源大数据专场的分享。本篇内容主要分为四部分: 数据分析架构演进介绍 Apache PaimonFlink Paimon 流式湖仓流式湖仓Demo演示 数据分析架构演进 …

虾皮数据参谋:知虾助力商家实现数据化运营的利器

在如今竞争激烈的电商市场中,商家需要准确的数据分析来指导他们的业务决策。Shopee电商平台的数据分析工具——虾皮数据参谋(知虾),为商家提供了丰富的数据分析服务,包括商品市场、销量、价格分布、物流监控、差评监控…

ArkTS声明式开发范式

装饰器 用来装饰类、结构体、方法以及变量,赋予其特殊的含义,如上述示例中 Entry 、 Component 、 State 都是装饰器。 Component 表示这是个自定义组件; Entry 则表示这是个入口组件; State 表示组件中的状态变量,…

最新版灵沐V3.3微信资源类小程序源码支持流量主

源码简介 最新版灵沐V3.3微信资源类小程序源码支持流量主,一套不错的流量主变现资源下载小程序,它支持在微信、QQ和抖音平台上运行。这次更新主要集中在全局UI设计的升级,并依然注重资源下载和激励视频变现的功能。另外,还新增了…

VR模拟仿真技术为司法科普建设注入更多的智慧和力量

虚拟现实(VR)技术已经逐渐渗透到各个领域,包括司法领域,在法学院教学中,VR虚拟现实和web3d开发技术的兴起,让司法教育也突破传统教授式、演练式的教学模式,通过VR特有的沉浸式展示特点,实现了真实法庭效果的…

【Sorted Set】Redis常用数据类型: ZSet [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 目录 ⑤Redis Zset 操作命令汇总1. zadd 添加或…

【考研数据结构代码题7】求一元多项式之和

题目:编写一个算法,求一元多项式之和 考纲:一元多项式的表示与相加 题型:代码填空或算法设计 难度:★★★ 参考代码 typedef struct node{float coef;//系数int exp;//次数struct node *next; }polynode; polynode *…

5 分钟,开发自己的 AI 文档助手!手把手教程

大家好,我是鱼皮。 几个月前,我自己开发过一个 AI 文档总结助手应用。给大家简单演示一下,首先我上传了一个文档,定义 1 1 等于 3: 然后把文档喂给 AI 文档总结助手,再向它提问,然后 AI 就回答…

登陆页面模板

简单好看的登陆页面 vue项目代码 可忽略js部分 先来个效果图 <template><div class"login"><div class"content"><p >账户密码登录</p><div class"unit"><label class"label">用户名</…

Hadoop学习总结(MapReduce的数据去重)

现在假设有两个数据文件 file1.txtfile2.txt2018-3-1 a 2018-3-2 b 2018-3-3 c 2018-3-4 d 2018-3-5 a 2018-3-6 b 2018-3-7 c 2018-3-3 c2018-3-1 b 2018-3-2 a 2018-3-3 b 2018-3-4 d 2018-3-5 a 2018-3-6 c 2018-3-7 d 2018-3-3 c 上述文件 file1.txt 本身包含重复数据&…

汇编-PROTO声明过程

64位汇编 64 模式中&#xff0c;PROTO 伪指令指定程序的外部过程&#xff0c;示例如下&#xff1a; ExitProcess PROTO ;指定外部过程&#xff0c;不需要参数.code main PROCmov ebx, 0FFFFFFFFh mov ecx,0 ;结束程序call ExitProcess ;调用外部过程main ENDP END 32位…

手把手云开发小程序-(四)-uniclould增删改查业务开发

一&#xff0c;导入uView 在开发小程序的时候&#xff0c;我习惯使用uView这个ui库。主要是直接用当然比自己写省时间。 它的官网&#xff1a;uView - 多平台快速开发的UI框架 - uni-app UI框架 (gitee.io) 导入&#xff1a; npm install uview-ui2.0.31然后按照官网进行配…

UltraCompare 23 for Mac文件对比工具

UltraCompare是一款功能强大的文件比较和合并工具&#xff0c; 以下是它的特色介绍&#xff1a; 多种文件格式支持&#xff1a;UltraCompare支持比较和合并多种文件格式&#xff0c;包括文本文件、二进制文件、office文档、PDF文件等。 文件差异高亮显示&#xff1a;UltraComp…

内测分发平台的合作生态和生态效应如何

大家好&#xff0c;我是咕噜-凯撒&#xff0c;随着移动互联网和智能设备的快速发展&#xff0c;越来越多的开发者和企业开始关注产品的质量和体验。而内测分发平台则成为了一种重要的工具&#xff0c;能够帮助他们更好地测试、优化和推广产品。在此过程中&#xff0c;内测分发平…