什么是架构?什么是软件架构?软件架构与结构组件和连接组件有关。 在本篇文章中我们先来谈谈这些组件和软件系统的关系。 在下一篇文章中,我们会再讨论架构的好与坏。 结构组件软件中的结构组件是支持系统中其他层的层: · 开发语言库建立在操作系统提供的函数和接口上 · 应用软件产品建立在开发语言库上 · 我们使用的第三方库建立在前两个层之上 · 您自己写的代码建立在以上层之上 因此,我们创建的任何应用程序至少有以下结构组件: 在一个设计良好的系统中,您的代码也将分解成应用程序架构的不同层。在理想情况下,每层只依赖于它下面的层。 否则就是个循环,这表示出现了什么错误。 连接组件每个软件系统都具有跨不同层次进行通信的连接组件。 通常,第三方库是提供数据结构(XML,JSON等),日志记录,调试和其他服务等共享服务。 在您的代码里面,也将拥有每一层使用的共享服务。 图表如下: 层1,2,...,N表示代码中的层,并且共享服务在切入所有图层时垂直显示。 第N层代表系统的UI层,该层的功能取决于它下面的所有层。 架构综述当人们谈论软件架构时,他们不只是谈论代码的结构,还应该包括机器和操作系统组件。 所以,比如当人们谈论LA/NMP架构时,他们正在谈论: · OS,即 Linux。 · Web服务器:运行在 Linux 上的 Apache 或 Nginx。 · 数据库:MySQL/MariaDB,运行在 Linux上。 · 代码:使用来自 OS 的服务以及 MySQL 数据库上运行的 PHP 代码。 说明:PHP层进一步细分,上图为结构组件部分。 LAMP架构涉及结构元素。 连接元素只是在PHP层内部创建的或者通常由O / S提供的元素。 因此,相关的架构包括: · OS操作系统。 · 所有支持服务,即Web服务器,数据库等 · 由您开发或第三方写的高层应用程序 通用软件架构对于软件的结构组件,我们再一起讲讲层。 这些层可以操作系统OS相关联,比如OS如何与运行环境&服务(Web服务器,数据库等)通信,或者应用程序如何与支持服务与OS进行通信。 在您的应用程序中有不同的层次交互: 1. 如何在您的语言的API和您已安装的第三方库上构建基础层 2. 如何突破层的限制与软件的不同层进行通信 任何模型 - 视图 - 控制器(MVC)程序的主要架构组件看起来都像这样: 其中: · 模型层(AKA业务层)建立在第三方API和操作系统API之上 · 视图层(AKA GUI层)建立在第三方GUI API上。 · 数据层是建立在数据库API上的。 我们所用的API都是基于正在使用的编程语言提供的标准API。 说明
· 改变编程语言需要重新考量上面的每一层。 · 这意味着,如果您更改语言并且必须更改某些第三方API,则上面的层也需要跟着更改。 · 严格的层区分意味着,在更改第三方API时,只会影响MVC系统的单层。 · 通常情况下,开发人员在各代码行着色,而第三方库的更改会导致相当多的痛苦,因为发现了层错误。 · 没有足够的业务层一定会出问题的,因为它是视图/ GUI和数据层之间的主要分离结构之一。 · 人们在改变数据库API或数据库的时候发现缺乏业务层,却一直在GUI中应用。 · 通常,当业务功能被构建到模型/ GUI层中时,那么在使用新的GUI API时,该功能会丢失并需要重新编码。 连接组件
软件连接组件用于系统的层之间传送数据。 这些组件通常在任何地方都可用(尽管它们可能被限制在不同层)。 常见的连接组件比如有用来做调试和日志的,这些组件是通用的。调试和日志记录程序可以在所有层中使用,我们不用担心层依赖性。 其他连接组件也容易被识别,因为它们是跨层共享的组件。 详细地说,这些库/模块包含在应用程序的多个层中。
作者:Dalip Mahal |
|