架构模式是在给定上下文中解决软件架构中常见问题的通用,可重用的解决方案。
创新互联建站是一家专注于网站制作、网站建设与策划设计,罗甸网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:罗甸等地区。罗甸做网站价格咨询:13518219792
模式是上下文中问题的解决方案。
如今,许多程序员仍然对体系结构模式之间的差异感到困惑,甚至对此并不了解。
让我向您解释…!
分层架构
最常见的架构模式是分层架构或称为n层架构。大多数软件架构师,设计师,开发人员都广为人知。尽管对于必须存在的层的数量和类型没有特别的限制,但是大多数分层体系结构由四个层组成:表示,业务,持久性和数据库,如下所示。
> an popular example of n-tier architecture
语境
所有复杂的系统都需要独立开发和演化系统的各个部分。由于这个原因,系统的开发人员需要明确且有据可查的关注点分离,以便可以独立开发和维护系统的模块。
问题
需要对软件进行分段,以便可以独立开发和开发模块,而各部分之间的交互很少,从而支持可移植性,可修改性和重用性。
解决方案
为了实现关注点的分离,分层模式将软件分为称为层的单元。每一层都是一组模块,这些模块提供了一套紧密的服务。用法必须是单向的。层完全对一组软件进行分区,并且每个分区都通过公共接口公开。
弱点
层会导致性能下降。该模式无法将其自身应用于高性能应用程序,因为遍历体系结构的多个层来满足业务请求效率不高。
层的增加还增加了系统的前期成本和复杂性。
用法
对于小型,简单的应用程序或网站,我们应该使用此样式。对于预算和时间紧迫的情况,这是一个不错的选择。
多层模式
语境
在分布式部署中,通常需要将系统的基础结构分布到不同的子集中。
问题
我们如何将系统划分为多个在计算上独立的执行结构:通过某些通信介质连接的软件和硬件组?
解决方案
> a multi-tier example — consumer website J2EE
许多系统的执行结构被组织为一组组件的逻辑分组。每个分组称为一个层。
弱点
大量的前期成本和复杂性。
用法
用于分布式系统。
管道和过滤器
反复出现的软件体系结构中的一种模式是管道过滤器模式。
> the pipe filter style
语境
需要许多系统从输入到输出转换离散数据项的流。实际上,许多类型的转换会重复发生,因此,需要将它们创建为独立的,可重复使用的部分。
问题
此类系统需要分为具有简单,通用交互机制的可重用,松散耦合的组件。这样,它们可以灵活地彼此组合。通用且松散耦合的组件易于重用。独立的组件可以并行执行。
解决方案
这种架构中的管道形成了过滤器之间的通信通道。第一个概念是每条管道都是无方向性的,并且出于性能原因是点对点的,接受来自一个源的输入,并始终将输出定向到另一个。
此样式中存在四种类型的过滤器,如下所示。
弱点
由于交互式系统的转换特性,因此不是很好的选择。
过多的解析和未解析会导致性能损失并增加编写过滤器本身的复杂性。
用法
管道过滤器体系结构用于各种应用程序中,尤其是有助于简单单向处理的任务,例如EDI,ETL工具。
编译器:连续的过滤器执行词法分析,解析,语义分析和代码生成。
客户端服务器
语境
有许多分布式客户端希望访问的共享资源和服务,我们希望对其进行控制,以控制访问或服务质量。
问题
通过管理一组共享资源和服务,我们可以通过排除常见服务并必须在单个位置或少数位置中对它们进行修改来提高可修改性和重用性。我们希望通过集中控制这些资源和服务,同时在多个物理服务器之间分配资源本身来提高可伸缩性和可用性。
解决方案
在客户端-服务器样式中,组件和连接器具有特定的行为。
弱点
服务器可能是性能瓶颈和单点故障。
构建系统后,关于在何处定位功能(在客户端还是在服务器中)的决策通常很复杂,更改成本很高。
用法
我们可以使用客户端-服务器样式来建模系统的一部分,该系统具有许多组件,这些组件将请求(客户端)发送到另一个提供服务的组件(服务器):在线应用程序,例如电子邮件,文档共享和银行业务。
模型视图控制器 MVC
语境
用户界面通常是交互式应用程序中最经常修改的部分。用户通常希望从不同的角度查看数据,例如条形图或饼图。这些表示均应反映数据的当前状态。
问题
如何将用户界面功能与应用程序功能区分开,又如何对用户输入或底层应用程序数据的更改做出响应?
当基础应用程序数据更改时,如何创建,维护和协调用户界面的多个视图?
解决方案
模型视图控制器(MVC)模式将应用程序功能分为以下三种组件。
弱点
对于简单的用户界面,复杂性可能不值得。
模型,视图和控制器的抽象可能不适用于某些用户界面工具箱。
用法
MVC是一种架构模式,通常在开发用户界面时用于Web移动应用程序。
事件驱动架构
语境
需要提供计算和信息资源来处理传入的独立异步应用程序生成的事件,其方式可以随需求的增加而扩展。
问题
构建可以为与事件关联的异步到达消息提供服务的分布式系统,并且该分布式系统可以从小型和简单扩展到大型和复杂。
解决方案
部署独立的事件流程/处理器以进行事件处理。到达事件排队。调度程序从队列中提取事件,并根据调度策略将它们分配给适当的事件处理程序。
弱点
性能和错误恢复可能是个问题。
用法
使用此方法的电子商务应用程序将按以下方式工作:订单服务以挂起状态创建订单并发布OrderCreated事件。
微服务架构
语境
部署支持多种浏览器和本机移动客户端的基于服务器的企业应用程序。该应用程序通过执行业务逻辑,访问数据库,与其他系统交换消息并返回响应来处理客户端请求。该应用程序可能会公开一个第三方API。
问题
整体应用程序可能变得太大和复杂,以致于无法有效支持,而部署则无法实现最佳的分布式资源利用,例如在云环境中。
解决方案
将应用程序构建为服务套件。每个服务都可以独立部署和扩展,并具有自己的API边界。可以用不同的编程语言编写不同的服务,管理自己的数据库,并由不同的团队开发。
弱点
系统必须设计为能够承受需要更多系统监视的服务故障。服务编排和事件协作开销。
我们还需要更多的内存。
用法
许多用例适用于微服务架构,尤其是那些涉及大量数据管道的用例。例如,基于微服务的系统非常适合公司零售商店销售的报告系统。数据准备过程的每个步骤都将由微服务处理:数据收集,清理,规范化,充实,汇总,报告等。
分享文章:软件构架:码农需要了解的很重要的软件构架模式
分享链接:http://www.stwzsj.com/qtweb/news19/15019.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联