文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

五大主流软件架构模式

2024-12-11 20:47

关注

【51CTO.com快译】

在去年底召开的全球软件架构峰会(Global Software Architecture Summit)上,全球各界开发人员齐聚一堂,广泛地讨论了各种业界常见的软件架构模式。在此,我为您梳理并总结这些软件架构师给我们带来的精彩见解。

首先,什么是软件架构模式?

架构模式是那些由软件架构师通过持续实践,进而总结出的、过往已验证的、优秀设计架构。它们往往能够被重复地使用到其他项目或领域之中。更具体地说,架构模式是需要在实践中反复发掘的一组设计决策。它具有明确定义的属性,以及一套可以被重复使用与描述的架构。

其实,开发软件架构可以被看作是针对模式进行选择、定制和组合的一整套过程。而软件架构师的任务就是要决定:如何实例化模式,如何使其与特定的上下文、以及问题的约束相适应。我们将在下文中进行详细的讨论。

Mark Richards在其著作--《软件架构模式》一书中主要介绍了5种软件架构模式,它们分别是:微内核、微服务、分层架构、基于事件(事件驱动)和基于空间。下面我们将根据这个顺序逐一进行介绍。

1.微内核模式

微内核架构模式也称为插件架构模式。它通常是在软件团队创建具有可互换性组件(interchangeable components)的系统时,被使用到。

该模式主要适用于那些必须能够适应不断变化需求的软件系统。微内核模式能够从扩展功能、以及特定于客户的部件中,分离出最小的功能核心。作为一种套接字(socket),它能够插入到各种扩展之中,并协调其相互之间的协作关系。

业界通常认为:微内核架构模式是一种可被用于实施基于产品的应用程序的自然模式。此处所谓基于产品的应用程序,是一种打包的应用程序,可以作为典型的第三方产品版本被下载。当然,许多公司也会据此来开发和发布其内部的业务应用,例如:各种软件产品、版本、发布说明、以及可插入的功能等。

微内核架构模式允许您将其他应用程序的功能作为插件,添加到核心的应用程序上,进而提供可扩展性、以及功能上的分离(隔离)。

微内核架构模式通常由两种类型的架构组件所组成:核心系统和各种插件模块。我们需要将应用程序的逻辑,在各个独立的插件模块和基础核心系统之间进行划分,以提供基于应用功能,和自定义处理逻辑的可扩展性、灵活性和隔离性。在传统概念上,微内核架构模式的核心系统,仅包含那些系统运行所需的最少功能。

微内核架构的最佳示例是Eclipse IDE。通过下载基本的Eclipse产品,您只会获得一个编辑器。而只有在您添加了各种插件之后,它才能成为一个高度可定制的、实用的产品。

优势:

适合性:

2.微服务模式

当您将应用程序作为一组微服务进行编写时,实际上是在编写可以协同工作的多个微型应用程序。每个微服务都有自己的“职责”,团队可以独立于其他微服务进行开发。他们之间唯一的依赖便是沟通。当微服务彼此进行通信时,您必须确保它们之间发送的消息能够向后兼容。

优势:

适合性:

3.分层架构模式

最常见的架构模式当属分层架构模式。它是我们用来设计大多数软件的传统方法,同样有具有一定的独立性。分层架构模式是一种多层模式,每个层面上都有多个组件。这就意味着所有的组件虽然是互联的,但是彼此之间并不依赖。在应用程序中,分层架构模式的每一层都有特定的角色和职责。例如:表示层将负责处理所有用户界面和浏览器之间的通信逻辑,而业务层将负责执行与请求相关的特定业务规则。

分层架构模式的主要特点在于各个组件各司其职,相互分离。也就是说,某个特定层面上的组件,仅会处理与该层有关的逻辑。

优势:

适合性:

4.基于事件(事件驱动)的模式

这是用于开发具有高度可扩展性系统的最常见分布式异步架构。该架构由那些可用于监听事件,并能够异步处理事件的组件所组成。事件驱动类架构构建出一个能够接收所有数据的中央单元。该单元可以被委托给那些具有处理特定类型能力的单独模块。

优势

适合性:

5.给予空间的模式

基于空间的架构模式被专门设计为解决那些可扩展性和并发性的问题。对于那些具有不定因素和不可测并发用户数的应用来说,它同样也是一种非常实用的架构模式。该模式通过消除对中央数据库的约束,以及使用可复制的内存中数据格(data grids),来实现良好的可扩展性。

此外,基于空间的架构可以通过在多个服务器之间进行拆分处理与存储,以避免高负载下的功能性崩溃。

优势

适合性

总的说来,上述介绍的五种架构模式各有自己的优势和适用环境。您可以在程序设计与项目中,按照实际需求选择不同的软件架构模式,并实现复用。

原5 Major Software Architecture Patterns,作者: Ekaterina Novoseltseva

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯