软件的架构是一种抽象的结构 , 它由软件的各个组成部分和这些部分之间的依赖关系构成 。正如你将在本文中看到的 , 软件的架构是多维的 , 因此有多种方法可以对其进行描述 。架构很重要的原因是它决定了应用程序的质量属性或能力 。传统上 , 架构的目标是可扩展性、可靠性和安全性 。但是今天 , 该架构能够快速安全地交付软件 , 这一点非常重要 。你将了解微服务架构是一种架构风格 , 可为应用程序提供更高的可维护性、可测试性和可部署性 。
文章插图
我将通过描述软件架构的概念及其重要性来开始本文 。接下来 , 我将讨论架构风格的概念 。然后我将微服务架构定义为特定的架构风格 。让我们从理解软件架构的概念开始 。
1软件架构是什么 , 为什么它如此重要
架构显然很重要 。至少有两个专门讨论该主题的会议:O’Reilly的软件架构会议和SATURN会议 。许多开发人员的目标是成为一名架构师 。但什么是架构 , 为什么它如此重要?
为了回答这个问题 , 我首先定义术语软件架构的含义 。之后 , 我将讨论应用程序的架构是多维的 , 并使用一组视图或蓝图进行描述 。然后我将强调软件架构的重要性 , 因为它对应用程序的质量属性有显著的影响 。
文章插图
软件架构的定义
软件架构有很多定义 。例如 , 维基百科上列举了大量的定义 。我最喜欢的定义来自卡耐基梅隆大学软件工程研究所的Len Bass及其同事 , 他们在使软件架构成为一门学科方面发挥了关键作用 。他们定义的软件架构如下:
计算机系统的软件架构是构建这个系统所需要的一组结构 , 包括软件元素、它们之间的关系以及两者的属性 。
这显然是一个非常抽象的定义 。但其实质是应用程序的架构是将软件分解为元素(element)和这些元素之间的关系(relation) 。由于以下两个原因 , 分解很重要:
它促进了劳动和知识的分工 。它使具有特定专业知识的人们(或多个团队)能够就应用程序高效地协同工作 。
它定义了软件元素的交互方式 。
将软件分解成元素以及定义这些元素之间的关系 , 决定了软件的能力 。
软件架构的4+1视图模型
从更具体的角度而言 , 应用程序的架构可以从多个视角来看 , 就像建筑架构 , 一般有结构、管线、电气等多个架构视角 。Phillip Krutchen 在他经典的论文《 Architectural Blueprints — The 4+1 View Model of Software Architecture 》中提出了软件架构的4+1视图 。图1展示的这套视图定义了四个不同的软件架构视图 , 每一个视图都只描述架构的一个特定方面 。每个视图包括一些特定的软件元素和它们相互之间的关系 。
文章插图
图14+1视图模型使用四个视图描述应用程序的架构 , 并显示每个视图中的元素如何协作处理请求的场景
每个视图的目的如下:
- 逻辑视图:开发人员创建的软件元素 。在面向对象的语言中 , 这些元素是类和包 。它们之间的关系是类和包之间的关系 , 包括继承、关联和依赖 。
- 实现视图:构建编译系统的输出 。此视图由表示打包代码的模块和组件组成 , 组件是由一个或多个模块组成的可执行或可部署单元 。在JAVA中 , 模块是JAR文件 , 组件通常是WAR文件或可执行JAR文件 。它们之间的关系包括模块之间的依赖关系以及组件和模块之间的组合关系 。
- 进程视图:运行时的组件 。每个元素都是一个进程 , 进程之间的关系代表进程间通信 。
- 部署视图:进程如何映射到机器 。此视图中的元素由(物理或虚拟)计算机和进程组成 。机器之间的关系代表网络 。该视图还描述了进程和机器之间的关系 。
推荐阅读
- 十几年linux运维工程师的工作经验分享
- 现在程序员最火的微服务架构与SpringCloud,你真的弄清楚了吗?
- 春夏穿搭|韩国oni春季穿着分享
- 清明节气如何养生,分享五个小常识
- 我喜欢你很久了的说说 分享你最喜欢的一句话
- 自由职业者|工作10年,历经制造业和互联网行业,分享以下4点总结和感悟!
- 紫砂陶艺历代师承情况
- 八个月宝宝头发发黄怎么办
- 天蝎座|网友分享纯物理减肥法,感觉很厉害的样子,你觉得这样可行吗?
- 设计师必备的印刷常识