0

0

几种常见的软件架构是什么?

青灯夜游

青灯夜游

发布时间:2020-08-28 15:24:40

|

20998人浏览过

|

来源于php中文网

原创

常见的软件架构模式:分层架构模式、客户端-服务器模式、主从模式、管道-过滤器模式、代理模式、点对点模式、事件总线模式、模型-视图-控制器(MVC)模式、黑板模式、解释器模式等。

几种常见的软件架构是什么?

10种常见软件架构模式

是否想知道大型企业级系统是怎么设计的?在软件主体开发之前,我们必须选择一个合适的架构来提供所需的功能和质量特征。所以在应用于设计之前,我们应该了解不同的架构。


什么是架构模式

维基百科:架构模式是在给定上下文的软件架构中,针对常发生问题的一种通用、复用的解决方案。架构模式类似于软件设计模式,但是范畴更广。

本文中,我将简要的阐述如下10中常见架构模式的应用和优缺点。

    1. 分层模式
    2. 客户端-服务端模式
    3. 主从模式
    4. 管道-过滤器模式
    5. 代理模式
    6. 点对点模式
    7. 事件总线模式
    8. 模型-视图-控制器模式
    9. 黑板模式
    10. 解释器模式

1. 分层模式

该模式用于构建可分解为多组子任务的程序,每个子任务都在某个抽象层,每个层对上一个更高层提供服务。一般信息系统中最常见的4层体系如下。

  • 表示层(也叫 UI 层)
  • 应用层(也叫服务层)
  • 业务逻辑层(也叫领域层)
  • 数据访问层(也叫持久层)
    应用场景
  • 一般桌面程序
  • 电子商务网页程序


2. 客户端-服务器模式

    该模式由两部分构成:单个服务器端和多个客户端。服务器组件对多个客户端组件提供服务。客户端向服务器端请求服务,服务端提供对应服务给这些客户端。此外,服务器端继续监听客户端请求。

应用场景

  • 在线应用,比如电子邮件、文档分享和银行业务


3. 主从模式

该模式由两部分构成:主节点和多个从节点。主节点组件向多个独立的从节点组件分派任务,并根据从节点返回结果计算出最终结果。

应用场景

  • 数据库复制,主数据库被视为权威来源并同步到从数据库
  • 连接到计算系统的外围设备(主从驱动)


4. 管道-过滤器模式

    该模式用于构建生产和处理数据流的系统。每个处理步骤封装在一个过滤器组件中。待处理的数据被传送到管道之中,这些管道可用于缓冲或者同步。

    应用场景

  • 编译器,接连的过滤器执行词义分析,语法分析,语义分析和代码生成
  • 生物资料学科的工作流


5. 代理模式

    该模式用于构建组件解耦的分布式系统。这些组件通过远程调用彼此交互。代理组件负责多个组件的通信协调,服务器向代理公开他们的能力(服务和特性);客户端从代理中获取服务,然后代理重定向客户端到注册服务库中一个合适的服务。

    应用场景

  • 消息队列软件,比如 Apache ActiveMQ、Apache Kafka、RabbitMQ 和 JBoss Messaging


魔法映像企业网站管理系统
魔法映像企业网站管理系统

技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作

下载

6. 点对点模式

    该模式中,各独立组件都叫对等点。对等点既可以作为客户端从其他对等点获取服务,也可作为服务端向其他对等点提供服务。对等点可作为客户端、或者服务端、或者两者,并且在不时间动态切换角色。

    应用场景

  • 文件分享网络,比如 Gnutella 和 G2
  • 多媒体协议,比如 P2PTV 和 PDTP
  • 私媒体程序,比如 Spotify


7. 事件总线模式

    该模式主要处理事件,有4个主要组件:事件源,事件监听器,频道和事件总线。事件源发布消息到事件总线上的某个频道,监听器订阅某个频道,并得知在已订阅频道中发布的消息。

    应用场景

  • Android 开发
  • 通知服务


8. 模型-视图-控制器模式

    该模式也叫 MVC 模式,划分交互程序为3个部分:模型——包含核心功能和数据,视图——显示信息给用户(多个视图可被定义),控制器——处理用户输入。它通过分割用户信息的内部陈述和呈现、接受方式来实现,解耦组件并允许高效的代码复用。

    应用场景

  • 主流编程语言的万维网程序架构
  • 网页框架,比如 Django 和 Rails


9. 黑板模式

    该模式对没有确定性方案策略的问题很有用。黑板模式由三个主要组件组成,黑板——包含解空间对象的结构化全局内存,知识源——有自拥表示的专门模块,控制组件——选择、配置和执行模块。所有组件都可访问黑板,可生成新的数据对象并添加到黑板中。在黑板中,可根据已有知识源的匹配规则,寻找某些类型的数据。

    应用场景

  • 语音识别
  • 车辆识别和跟踪
  • 蛋白质结构鉴定
  • 声呐信号解释


10. 解释器模式

    该模式用于设计解释特定语言编写的程序的组件。该组件主要指定怎么去评估程序代码行,也就是所谓的用某种语言写的语句或者表达式,基本点在于给语言符号分类。

    应用场景

  • 数据库查询语言,比如 SQL
  • 用于描述通信协议的语言


架构模式比较

下面的表格概述每个架构模式的优缺点。


希望这篇文章对你有帮助,也很想听听你们的想法。谢谢阅读。^_^

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

674

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

319

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

345

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1084

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

355

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

671

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

566

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

408

2024.04.29

vlookup函数使用大全
vlookup函数使用大全

本专题整合了vlookup函数相关 教程,阅读专题下面的文章了解更多详细内容。

28

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.7万人学习

ThinkPHP6.x 微实战--十天技能课堂
ThinkPHP6.x 微实战--十天技能课堂

共26课时 | 1.6万人学习

ThinkPHP6.x API接口--十天技能课堂
ThinkPHP6.x API接口--十天技能课堂

共14课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号