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

五、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.mzph.cn/news/224958.shtml

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

相关文章

提前预警,时刻守护:迅软DLP的数据安全先锋

许多数据泄密事件的发生,往往都是由于没有在案发事前做好安全保护,使得重要信息被随意攻击、盗取、泄密。比起在危机发生后亡羊补牢,更重要的是应该在案发之前未雨绸缪。迅软DLP作为迅软股份研发的“重磅选手”,可为政企单位在一切…

Spring Boot整合Sharding-JDBC实现数据脱敏

目录 背景ShardingSphere脱敏规则sharding-jdbc数据脱敏数据脱敏配置数据分片 数据脱敏配置 背景 对互联网公司、传统行业来说,数据安全一直是极为重视和敏感的话题。数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护…

华为配置VRRP负载分担示例

组网需求 如图1所示,HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力,HostA以SwitchA为默认网关接入Internet,SwitchB作为备份网关;HostC以SwitchB为默认网关接入Internet,Switc…

深入理解网络 I/O:单 Selector 多线程|单线程模型

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

自动化测试框架Playwright安装以及使用

最近,微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以无头模式、有头模式运行,并提供了同步、异步的 API,可以结…

Python 实现:OCR在图片中提取文字(基于Gradio实现)

Paddle OCR PaddleOCR 基于深度学习技术实现的,使用十分简单。 先看效果 可以看出来识别效果还是不错的,里面的“湿”字识别成了繁体字。如果不是连体字,就不会出现这个问题。 1.测试环境 操作系统:Win10 Python:3…

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

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

Domino万物可订阅

大家好,才是真的好。 如果你还不知道什么是RSS,从V站截图一份放到这里供大家参考: 其实,Domino上也可以很简单地发布RSS站点,以供内部或外部用户订阅。 前面其实我们说了不少关于Notes客户端的RSS订阅功能&#xff…

人工智能驱动的智慧城市:科技之光照亮未来城市发展

导言 人工智能在智慧城市建设中扮演着关键角色,通过智能化、自动化的手段,为城市提供高效、智能的管理和服务。本文将深入研究人工智能在智慧城市中的应用、创新技术以及对城市未来发展的引领作用。 智慧城市是利用先进的信息技术和大数据分析手…

nodejs+vue+微信小程序+python+PHP邮件分类系统的设计与实现-计算机毕业设计推荐

运用现代化信息技术手段加强电子邮件的管理,可以大大地降低管理工作量加快收集信息的速度,通过加强管理,保护电子邮件完整无缺,过滤垃圾邮件,节省办公时间。 论文先介绍当前邮件分类系统的现状,然后调研开发…

jenkins学习19 - pipline 构建项目生成 allure报告并发送邮箱

前言 个人其实一直的不太喜欢用邮箱发送报告,测试报告用邮件通知这都是五六年前的事情了,但有部分小伙伴依然执着于发邮件报告通知。 这里整理了下发邮箱通知的教程。 配置你的邮箱 配置邮箱这一步最繁琐,由于每个人使用的邮箱不一样&…

Qt容器QScrollArea小部件的滚动视图

​# QScrollArea 平台:linux、windows、mac皆可,Qt版本:Qt5.14.2 QScrollArea是Qt框架中用于提供可滚动视图区域的小部件。它通常被用来包含一个较大的内容区域,并且可以在其中嵌入其他小部件。下面是一些常用的QScrollArea函数: 1. `setWidget(QWidget *widget)`: 设置在…

机器学习支持向量机(SVM)

svm与logstic异同 svm支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化&#x…

微服务保护--熔断降级

1.熔断降级介绍 熔断降级是解决雪崩问题的重要手段。其思路是由断路器统计服务调用的异常比例、慢请求比例,如果超出阈值则会熔断该服务。即拦截访问该服务的一切请求;而当服务恢复时,断路器会放行访问该服务的请求。 断路器控制熔断和放行…

3小时快速入门自动化测试 —— Selenium测试工具

自动化测试 自动化测试简单来说就是利用自动化测试工具和自动化测试脚本来完成指定的测试任务,测试启动过程无需人工参与,但自动化测试之前的准备工作需要人工手动配置好。它是一种将重复性、繁琐的测试任务交给计算机自动执行的方法,能够显…

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

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

【采坑分享】npm login/publish/whoami失败采坑,解决npmERR426、ETIMEDOUT、ECONNREFUSED等错误

目录 前言背景: 采坑之路: 1.修改https为http,问题还在 2.修改为淘宝镜像,问题还在 3.修改为官网地址,问题还在 4.升级node和npm,问题还在 5.猜想网络问题,问题解决 采坑总结&#xff1a…

HTTP 414错误:请求URI过长,如何避免

在Web开发中,HTTP状态码是用于表示Web服务器响应的各种状态。其中,HTTP 414错误表示请求URI过长,这意味着客户端发送的请求URL超过了服务器所能处理的长度限制。 当请求的URI过长时,服务器可能无法正确处理请求,从而导…

Spring批量加载Resource目录下的文件

项目中的配置文件用json方式存储在了resources下面的文件夹下面。如下: 在代码里面需要将他们全部读出来。 但是ClassLoader.getResource 只能读取单个文件,不能读取文件列表。然后就想到了 mybatis 同样也是要读配置文件列表,就想看看 myba…

01-EEA电子电器架构

1.背景 汽车正在从传统的机械装置逐步电气化,汽车电子电气功能不断的丰富。越来越多的电气系统和功能被集成到汽车上,传统的原理及线束设计已经远远不能满足。为此,EEA(电子电气架构)应运而生。如何设计电子电气架构,满足日益增长…