当前位置:首页 > 数码 > 对代码的编写有很好的指导作用-聊聊六边形架构 (代码的编写过程)

对代码的编写有很好的指导作用-聊聊六边形架构 (代码的编写过程)

admin5个月前 (05-01)数码23

为了编写出漂亮代码,学习设计模式是一个好方法。但是,只读这些书籍还不够,还需要理解它们背后的思想,即面向对象的原则。

六边形架构是一种软件架构模式,遵循这些原则,可以实现高内聚、低耦合和可测试性的应用程序设计。

什么是六边形架构?

六边形架构由 Alister Cockburn 发明,他是敏捷宣言的签署者之一。它是一种端口与适配器架构,由内外两层六边形组成,如下所示:

深蓝色六边形表示应用程序的核心,浅蓝色六边形表示外部接口。紫色部分的 context 是在实践中添加的,用于贯穿整个调用链的业务上下文。

端口和适配器

六边形架构有两个关键概念:端口和适配器。

端口是应用程序定义的接口,必须由外界实现,以便应用程序可以接收或发送信息。它可以是 Interface、WebAPI 接口或公共方法。

适配器是连接应用程序核心和外部接口的桥梁。它将外部请求转换为应用程序核心可以理解的格式,并将核心的响应转换为外部接口可以接受的格式。

通过端口和适配器,应用程序核心与外部存储隔离,从而变得稳定且易于更改。

为什么叫六边形架构?

目前没有明确的理由说明为什么是六边形,而不是其他的形状。或许只是因为六边形比较好看,又或许是因为六边形代表一个模块,系统由许多六边形模块组成,就像蜂窝一样。

六边形架构的特点

  • 应用程序核心分离且可测试。
  • 外部接口和适配器负责外部交互,保持应用程序核心独立和可复用。
  • 高内聚、低耦合。

六边形架构的原则

六边形架构遵循面向对象的原则,使系统保持整体稳定性:

  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 依赖反转原则

与 DDD 和微服务的关系

六边形架构常与 DDD 和微服务一起提及,但它们之间没有必然联系。

微服务是一种架构风格,而 DDD 是架构设计方法。六边形架构是一种具体的编码实践,可以指导软件的架构设计。

一些资料

聊聊六边形架构
  • Alister Cockburn 的六边形架构
  • Udacity 的六边形架构纳米学位
  • Visual Studio 的六边形架构支持

架构师的重要作用

软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。

有人认为:“认识源于实践,又指导实践,但只有正确的认识才能对实践有积极的指导作用。因此,在实践中必

①“认识来源于实践又指导实践,只有正确的认识才能对实践有积极的指导作用”,这句话正确揭示了实践与认识的辩证关系以及认识反作用的二重性,是正确的。 ②在实践中获取正确认识是必要的,但由于受主客观条件的限制,人们对一个具体事物的认识往往不可能经过实践到认识的一个过程就获得,而是需要实践到认识、认识到实践的多次反复,在这个过程中人们的错误总是难免的,只有经过不断纠正错误,才能获得正确的认识。 ③我们应该树立创新精神,充分发挥主观能动性,战胜挫折,自觉纠正错误,获得正确的认识。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: 架构

“对代码的编写有很好的指导作用-聊聊六边形架构 (代码的编写过程)” 的相关文章

从零开始打造新系统架构的完整指南 (从零开始打造不朽仙域免费)

从零开始打造新系统架构的完整指南 (从零开始打造不朽仙域免费)

架构设计是一个多维度的过程,包括工程架构、业务架构和部署架构等。一个好的系统架构标准应该具备可扩展性、可维护性、可靠性、安全性、高性能等特点。本文主要围绕工程架构设计展开探讨。 二、价值为先...

释放CPU与内存性能桎梏的终极解决方案-NUMA架构 (释放cpu性能)

释放CPU与内存性能桎梏的终极解决方案-NUMA架构 (释放cpu性能)

简介 NUMA(Non-Uniform Memory Access)是一种计算机架构,其中每个处理核心或处理器都拥有自己的本地内存。与统一内存访问(UMA)架构不同,在 UMA 架构中,所有...

你自称懂架构-架构设计的真谛!-来这里看看 (架构怎么理解)

你自称懂架构-架构设计的真谛!-来这里看看 (架构怎么理解)

1. 引言 抢红包已经成为春节期间不可或缺的娱乐活动,自2015年微信推出红包功能以来,每年参与抢红包的用户数和红包发放量都呈爆发式增长。微信红包系统的背后蕴含着怎样的技术架构和设计理念,一...

微服务架构监控的原则 (微服务架构监控)

微服务架构监控的原则 (微服务架构监控)

微服务环境中的监控系统:变革与指导原则 引言 微服务架构的兴起彻底改变了软件开发,带来了速度和灵活性。随之而来,监控系统作为微服务控制系统的核心组成部分,也面临着全面的改造需求,以适应微服务环境...

微服务架构中的不可或缺的服务治理工具-Eureka (微服务架构中如何处理服务间的通信)

微服务架构中的不可或缺的服务治理工具-Eureka (微服务架构中如何处理服务间的通信)

引言 Eureka是Netflix OSS(开源软件)项目的一部分,它是一个用于实现微服务架构中的服务注册和发现的开源工具。在当今庞大且复杂的微服务系统中,Eureka扮演着至关重要的角色,帮助...

CSaaS架构-开启数字孪生软件架构的新纪元 (csaas架构)

CSaaS架构-开启数字孪生软件架构的新纪元 (csaas架构)

简介 Browser/Server (BS) 和 Client/Server (CS) 是两种不同的软件架构模式,具有不同的特点和优缺点。本文将对这两种架构进行比较,并介绍山海鲸可视化的 C...

掌控复杂性-创造灵活可扩展的系统-六边形架构 (复杂事物掌控力)

掌控复杂性-创造灵活可扩展的系统-六边形架构 (复杂事物掌控力)

六边形架构是一种架构模式,将外部系统与核心应用程序分隔开来。它的思想很简单:从一个六边形开始,然后应用端口和适配器。 六边形架构的六个边 六边形有六个边,但六边形的形状本身并没有特别含...

从单体到分布式-全面解析-一文搞懂微服务架构演进 (单体可分为)

从单体到分布式-全面解析-一文搞懂微服务架构演进 (单体可分为)

简介 微服务架构是一种软件开发方法,将应用程序拆分为较小的、独立的服务,这些服务可以单独部署和维护。该架构旨在提高灵活性、可扩展性和可靠性。 微服务组件 服务:独立部署和维...