架构设计系列之常见架构(二)

五、DDD(领域驱动设计)

领域驱动设计(Domain-Driven Design,DDD)是一种开发思想,强调将软件系统的注意力集中在业务领域上,将领域视为应用的核心。在架构设计中,DDD 提供了一种不同的思维方式,从以数据为中心的传统模型转向以业务领域为中心的模型。

1 、核心概念

  • 领域层
    • 对应于洋葱架构中的内层,是 DDD 中的核心
    • 在这一层,通过领域模型的建立,深入理解业务概念和规则
    • 通过建模,将专业领域的知识融入软件设计,实现软件系统与业务场景的紧密结合
  • 领域模型
    • 用于捕捉业务概念和规则的模型
    • 通过建立领域模型,将业务领域的复杂性呈现在软件系统中,提高系统对业务的表达能力
  • 实体/值对象/聚合
    • DDD 中的基本概念,用于构建领域模型
    • 实体表示具有唯一标识的对象
    • 值对象是没有唯一标识的对象
    • 聚合是一组相关对象的集合

2 、优势

  • 深入理解业务
    • 通过领域建模,开发团队能更深入理解业务需求和规则
    • 使软件系统更加贴近实际业务场景,提高系统的可理解性
  • 可维护性
    • DDD 通过清晰的领域模型,降低了系统的复杂度
    • 模块化的设计使得系统更易于维护
  • 适应性
    • 领域模型的建立使得系统更加灵活,能够适应业务领域的变化

3 、推荐阅读

《领域驱动设计:软件核心复杂性应对之道》(Eric Evans)

DDD 的经典之作,详细介绍了如何通过领域驱动设计来理解和解决复杂软件系统中的问题。

国内也有一些作者写了关于 DDD 的书籍,但是很多都是基于这本书来的,有兴趣的也可以看看:

  • 《解构领域驱动设计》(张逸),这本书可能更好理解一点。

4 、总结

DDD 在当前业内基本上分为两个派系:

  1. 理论派:重规范,重系统训练,以方法体系为重
  2. 实践派:重实践,重个人感悟,以思想体系为重

从对 DDD 这几年的关注和学习,我把它分成四个部分:

  1. 关于结构理论:DDD 是用来进行战术建模与战略建模的
  2. 关于过程理论:DDD 是用来指导系统重构与软件工程的
  3. 关于语言理论:DDD 是建立关于业务模型的统一语言的
  4. 关于建模理论:DDD 是用来指导模型驱动的领域建模的

领域驱动设计在架构设计中的核心思想是将业务领域置于关注的焦点,通过领域模型的建立和应用,实现软件系统与实际业务的密切结合。这种思想的应用使得架构更加灵活,更易于理解和维护。

六、 COLA

COLA 架构,即整洁面向对象分层架构,Clean Object-oriented and Layered Architecture,COLA,是一种旨在在架构层面控制软件复杂度的面向对象分层架构。该架构思想不仅提供了理论指导,还包含了具体实施的框架和工具,以确保整个软件系统保持清晰、可维护和可扩展。

1 、核心特点

四层架构

COLA 架构采用四层架构,将系统划分为不同的层次,以便更好地组织和管理系统的组件。

  • 表示层(Presentation Layer)
    • 负责处理用户界面和用户输入,呈现数据给用户
    • 包括页面、控制器等组件
  • 应用层(Application Layer)
    • 包含应用的核心业务逻辑,协调领域服务的调用
    • 不包含具体业务规则,主要用于编排业务流程
  • 领域层(Domain Layer)
    • 包括领域模型、实体、值对象、聚合等,体现了系统的业务核心
    • 包含具体的业务规则和业务逻辑
  • 基础设施层(Infrastructure Layer)
    • 处理与外部系统的通信、数据库访问等技术实现
    • 保持与具体技术的解耦,确保系统的灵活性
规范设计
  • 组件规范
    • 规定系统中组件的职责和行为,确保组件的设计符合整体架构
  • 包规范
    • 定义不同包的职责范围,确保包的划分清晰,避免功能交叉
  • 命名规范
    • 统一命名规范,提高代码的可读性,降低团队协作的沟通成本

2 、实施框架和工具

COLA 架构不仅是一种理论指导,还提供了具体实施的框架和工具,以降低实际项目的开发难度和风险。

  • 框架:提供了一套基础框架,包括四层架构的基本结构、组件之间的通信机制等
  • 工具:包括代码生成工具、规范检查工具等,帮助团队在开发过程中快速实现和遵循 COLA 架构

3 、优势

  • 清晰的层次架构:COLA 架构通过四层清晰的层次结构,使系统组织有序,易于理解和维护
  • 规范化设计:采用规范设计,确保团队对系统有一致的认知,提高协作效率
  • 可维护性和可扩展性:通过分层架构和规范设计,使系统更易于维护,并具备良好的可扩展性
  • 降低复杂度:通过控制软件复杂度,使开发团队更加专注于业务逻辑,而不是底层技术的实现

4 、指导原则

COLA 架构的指导原则包括四层架构的划分、规范化设计和实施框架工具的使用,确保整个团队在软件开发过程中能够始终遵循一致的设计理念,提高项目的整体质量。

在 COLA 架构的引导下,开发团队能够更好地应对软件复杂性,确保系统具备良好的可维护性和可扩展性。

七、 TOGAF

TOGAF(The Open Group Architecture Framework)是一种通用的企业架构开发框架,由 The Open Group 推出,它提供了一种综合性的方法,帮助企业定义和改进其 IT 战略、规划和实施过程。

1 、概述

TOGAF 的目标是通过定义清晰的技术路线图来改进企业的整体运营效果。包括四个关键部分:

  • 企业架构开发方法论 (Architecture Development Methodology, ADM)
    • 用于描述如何开发有效的企业架构
    • 提供了一套结构化的方法,帮助组织在不同层面上理解、规划和实施其架构
  • ADM 的指导说明
    • 提供关于如何有效使用 ADM 的详细指导,以确保架构的一致性和质量
  • 参考模型
    • 作为一个标准,提供了共享的基础架构,以促进企业架构的一致性和互操作性
  • 辅助资源
    • 包括框架、目录、指南和支持工具等,为组织提供实施 TOGAF 的辅助资源

2 、ADM 步骤

TOGAF 的 ADM 提供了一套详细的步骤,以引导企业架构的开发和实施:

  • 初步调查
    • 确定架构开发的范围和目标,建立团队,制定计划
  • 商务需求分析
    • 收集并分析业务需求,识别与业务目标相关的关键问题
  • 架构愿景与发展计划
    • 制定架构愿景,确定实现愿景的计划和阶段
  • 架构内容开发
    • 开发与架构愿景一致的详细架构内容,包括业务、数据、应用和技术层面
  • 架构交付物管理
    • 管理和维护架构开发过程中产生的各种文档和交付物
  • 解决方案评估
    • 评估候选解决方案,选择最佳方案以实现架构愿景
  • 实施与变更管理
    • 制定实施计划,监督实施过程,管理变更并确保项目成功

3 、优势和价值

  • 综合性方法
    • TOGAF 提供了一种综合性的企业架构开发方法,使组织能够在不同层面上协调和管理其架构
  • 标准化和一致性
    • 使用 TOGAF 可以促进标准化和一致性,确保整个企业在架构设计和实施方面保持一致
  • 规划和管理
    • ADM 提供了一套清晰的步骤,帮助组织规划、管理和实施其架构,确保项目按计划进行
  • 支持工具和资源
    • TOGAF 提供了一系列辅助资源和支持工具,帮助组织更轻松地采用和实施该架构

4 、指导原则

TOGAF 的指导原则包括使用 ADM 进行系统化和结构化的架构开发,依赖于参考模型和辅助资源,以及遵循详细的指导说明。通过遵循这些指导原则,组织可以更好地实现其企业架构的目标,提高整体运营效果。

八、 DODAF

DODAF(Department of Defense Architecture Framework)是由美国国防部于2003年推出的系统架构框架,旨在建立一套系统架构开发、管理、改进和实施的标准。

1 、概述

DODAF 的主要目的是提供一种标准的系统架构框架,以支持美国国防部及其他组织进行系统分析、系统集成和项目管理。它主要由五个层次组成:

  • 运营视图:关注业务流程和战术层面的分析,强调组织的战略目标和业务流程
  • 系统视图:关注系统和技术层面的分析,强调系统之间的相互关系和技术实现
  • 技术标准视图:关注技术标准和规范,强调系统的技术特性和标准遵循
  • 项目视图:关注项目管理和执行层面的分析,强调项目的计划、进度和资源分配
  • 数据视图:关注数据流和信息层面的分析,强调数据的收集、存储和传递

DODAF 强调架构的可视化和完整性,并允许不同的参与者和角色参与架构的开发过程。

2 、特征和要求

每个视图都有自己一系列的特征和要求,以确保架构的全面性和一致性。最重要的特征包括:

  • 架构框架:提供了整体的结构,定义了视图之间的关系和组织的总体构架
  • 业务流程:在运营视图中强调了业务流程,有助于理解组织的战略目标和核心业务

3 、应用范围

DODAF 的应用范围涵盖多个方面,包括系统分析、系统集成和项目管理。其广泛应用的领域包括:

  • 系统分析: 提供了多个视图,以全面了解系统的各个层面,促使系统分析更加全面和深入
  • 系统集成: 强调系统之间的关系和技术实现,有助于有效进行系统集成
  • 项目管理: 在项目视图中关注项目的计划、进度和资源分配,支持项目管理和执行

4 、优势和价值

  • 标准框架:DODAF 提供了一个标准框架,为组织提供了一致性的系统架构开发方法
  • 可视化和完整性:强调架构的可视化和完整性,有助于组织更好地理解和管理其系统
  • 战略和战术层面:同时关注战略和战术层面的分析,使得架构能够在不同层面上提供支持
  • 多角色参与:允许不同的参与者和角色参与架构的开发过程,促进了多方面的协作

5 、指导原则

DODAF 的指导原则包括使用不同的视图来覆盖系统的不同层面,确保架构的一致性和全面性。通过遵循这些指导原则,组织可以更好地应用 DODAF 框架,提高系统架构的质量和可管理性。

总结

在软件架构的领域中,我们介绍了多种经典架构模式,每一种都为解决特定问题和满足不同需求提供了独特的视角和解决方案,旨在帮助大家理解不同架构设计风格的适用场景,为未来的项目开发提供丰富的选择。

从经典的 MVC 到颠覆性的 CQRS,从灵活的六边形到深入的 DDD,从洋葱到可扩展的 COLA,从基础的模式到复杂的企业级架构框架,每一种都代表了一种独特的思考方式和技术实践。

无论您是在简单的 Web 应用程序还是复杂的分布式系统工作,理解并熟练运用这些架构都将有助于构建出更健壮、可维护且适应未来需求变化的软件。

记住,架构设计没有银弹,选择最适合您的项目和团队的架构才是最为关键的,让我们通过不断学习和实践,积累更丰富的架构经验,不断提升自己的架构设计水平,推动团队和组织朝着更稳健、可维护、可扩展的方向发展,同时在这个实践过程中不断提升我们的架构技能。

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

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

相关文章

IDEA debug窗口左边工具栏隐藏与显示

今天在debug排查代码的时候一不小心点到哪里,结果变成这样 我们可以这样恢复,右键Debug 点击show Toolbar

Excel实现字母+数字拖拉自动递增,步长可更改

目录 1、带有字母的数字序列自增加(步长可变) 2、仅字母自增加 3、字母数字同时自增 1、带有字母的数字序列自增加(步长可变) 使用Excel通常可以直接通过拖拉的方式,实现自增数字&#xf…

牛客后端开发面试题2

微软2021 1、给你一个凸多边形,你怎么用一条线,把它分成面积相等的两部分 将凸多边形的任意一个顶点作为顶点,然后连接另外两个相邻的顶点,将凸多边形划分成多个三角形。 计算每个三角形的面积,并且累加面积&#xff…

安恒明御安全网关 aaa_local_web_preview文件上传漏洞复现

0x01 产品简介 明御安全网关秉持安全可视、简单有效的理念,以资产为视角,构建全流程防御的下一代安全防护体系,并融合传统防火墙、入侵检测、入侵防御系统、防病毒网关、上网行为管控、VPN网关、威胁情报等安全模块于一体的智慧化安全网关。 0x02 漏洞概述 明御安全网关在…

[css] flex wrap 九宫格布局

<div class"box"><ul class"box-inner"><li>九宫格1</li><li>九宫格2</li><li>九宫格3</li><li>九宫格4</li><li>九宫格5</li><li>九宫格6</li><li>九宫格7&l…

Axure之动态面板轮播图

目录 一.介绍 二.好处 三.动态面板轮播图 四.动态面板多方式登录 五.ERP登录 六.ERP的左侧菜单栏 七.ERP的公告栏 今天就到这了哦&#xff01;&#xff01;&#xff01;希望能帮到你了哦&#xff01;&#xff01;&#xff01; 一.介绍 Axure中的动态面板是一个非常有用的组…

案例066:基于微信小程序的家政预约设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Qt容器QMdiArea 小部件提供一个显示 MDI 窗口的区域

## QMdiArea ## 控件简介 QMdiArea 继承 QAbstractScrollArea。QMdiArea 小部件提供一个显示 MDI 窗口的区域。QMdiArea的功能本质上类似于MDI窗口的窗口管理器。大多数复杂的程序,都使用MDI框架,在 Qt designer 中可以直接将控件 MDI Area 拖入使用。 ## 用法示例 例 qm…

Linux系统中如何开启和配置OpenGauss数据库的远程连接

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试7. 结语 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍…

「Swift」Xcode多Target创建

前言&#xff1a;我们日常开发中会使用多个环境&#xff0c;如Dev、UAT&#xff0c;每个环境对应的业务功能都不同&#xff0c;但每个环境之间都只存在较小的差异&#xff0c;所以此时可以使用创建多个Target来实现&#xff0c;每个Target对应这个一个App&#xff0c;可以实现一…

(WPF)Serilog 使用demo实例

Serilog 日志效果&#xff1a; 引入的Serilog库文件 实现代码 xaml 代码&#xff1a; <Window x:Class"Wpf_demo_Serilog.MainWindow" xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x"http://sche…

Python语言学习笔记之十一(DotEnv)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 1、认识Python DotEnv dotenv是Python中的一个工具包&#xff0c;它主要用于谈取项目中的.env文件&#xff0…

语音机器人话术设计重点

要使用语音机器人&#xff0c;首先得要先准备一套业务的话术脚本&#xff0c;这个话术脚本的设计&#xff0c;可能直接决定了语音机器人后续的使用效果。这个脚本的编写一般不是机器人厂家直接能完成的&#xff0c;只有业务的使用方&#xff0c;他们才最了解自己的业务&#xf…

ACT、NAT、NATPT和EASY-IP

目录 一、ACL 1.ACL 2.ACL的两种应用匹配机制 3.ACL的基本类型 4.ACL命令操作 5.ACL实验&#xff1a; 4.ACL的应用原则&#xff1a; 5.匹配原则&#xff1a; 二、NAT 1.NAT的原理及作用&#xff1a; 2.NAT分类 3.NAT配置 三、EASY-ip实验 四、NATPT 五、通配符 …

本地项目添加到gitlab命令操作

gitlab上面创建一个跟项目名同名的文件夹 创建文件夹&#xff0c;填写信息 添加readme文档&#xff0c;先保存下创建的文件夹 回到项目&#xff0c;复制项目的git 地址 然后进入到本地项目的文件夹&#xff0c;如d:/workspace/spring-demo&#xff0c;右键打开git bash弹框 命令…

浅入浅出理解MySQL和InnoDB

目录 数据库的定义 数据库和实例 MySQL 的架构 数据的存储 如何存储表 如何存储记录 数据页结构 索引 索引的数据结构 聚集索引和辅助索引 索引的设计 锁 并发控制机制 锁的种类 锁的粒度 锁的算法 死锁的发生 事务与隔离级别 几种隔离级别 脏读 不可重复读 幻读 总结 Innodb与…

对BIOS进行简单快速的设置更改,就能启用安全引导来安装Windows 11

本文介绍如何在UEFI/BIOS中启用安全引导&#xff0c;以便继续安装Windows 11。 如何启用安全引导 启用安全引导最简单的方法是通过UEFI/BIOS进行。它通常被列为BIOS中的众多选项之一&#xff0c;因此你只需打开它即可启用它。 1、启动&#xff0c;或重新启动你的电脑或笔记本…

【Android】在Android上使用mlKit构建人脸检测程序

在Android上构建人脸检测程序 目录 1、导入mlKit依赖包2、配置人脸检测器并且获取人脸检测器3、加载图片资源4、调用人脸检测器5、绘制矩形边框6、完整代码7、效果展示 1、导入mlKit依赖包 dependencies {// ...// Use this dependency to bundle the model with your appi…

【问题解决】Buildroot文件系统dropbear 上位机scp命令Permission denied, please try again.

前提&#xff1a; 上位机&#xff1a;Ubuntu虚拟机与开发板同局域网开发板&#xff1a;Buildroot文件系统&#xff0c;开启了dropbear&#xff0c;已经联网与虚拟机同局域网 liefyuanubuntu:~/tcp-test/tcp-c-client$ scp tcp_client root192.168.8.199:/opt root192.168.8.1…

构建强大应用的引擎:深度解析Spring Boot Starter机制

目录 引言1. Spring Boot Starter机制1.1 什么是Spring Boot Starter1.2 为什么要使用Spring Boot Starter1.3.应用场景1.4.自动加载核心注解说明 2. 综合案例配置类制作控制功能实现 总结 引言 在当今互联网时代&#xff0c;构建高性能、可维护的应用已成为开发者的首要任务。…