百科知识

计算机软件系统包括,到底都有哪些组成部分需要了解清楚

您是否对大型企业级系统的架构设计感到好奇?在软件开发项目正式启动之前,选择一个合适的架构方案至关重要,因为它需要满足项目所需的功能需求并保证最终的质量标准。因此,在将选定的架构应用到具体的设计实践中之前,我们必须深入理解各种不同架构模式的特点。

根据维基百科的定义:架构模式是在软件架构层面针对特定应用场景解决常见问题的通用化、可复用的解决方案。这种模式与软件设计模式具有相似性,但适用范围更广。在本文中,我将详细解析以下10种主流架构模式,并阐述它们的应用场景、优势与局限性:1、分层架构模式 2、客户服务器架构(CS) 3、主从架构模式 4、管道过滤器架构模式 5、代理架构模式 6、点对点架构模式(P2P) 7、事件总线架构模式 8、模型-视图-控制器(MVC)架构模式 9、黑板架构模式 10、解释器架构模式

这种架构模式适用于需要将程序分解为多个子任务组的场景,每个子任务组处于特定的抽象层级。每一层级都为下一层级提供服务支持。在信息系统中,常见的四层架构模式包括:

  • 表现层(也称为用户界面层)
  • 应用层(也称服务层)
  • 业务逻辑层(也称领域层)
  • 数据访问层(也称持久化层)
  • 适用于通用桌面应用程序
  • 适用于电子商务应用程序

该架构模式由两个主要部分构成:一个服务器组件和多个客户端组件。服务器端负责为多个客户端提供各类服务支持。客户端向服务器发起服务请求,服务器则向这些客户端提供相应的服务响应。此外,服务器会持续监听来自客户端的请求。

这种模式广泛应用于在线应用程序,例如电子邮件系统、文档共享平台和银行应用系统。

image

这种架构模式由两部分组成:主节点和从节点。主节点负责将工作任务分配给相同的从节点,并根据从节点返回的处理结果进行最终计算。

  • 在数据库复制场景中,主数据库承担写操作的中心职责,而从数据库与主数据库保持数据同步。
  • 应用于连接到计算机系统总线的外部设备(主驱动器和从驱动器)。

此架构模式适用于构建流式数据处理系统。每个处理步骤都被封装在一个过滤器组件中。待处理的数据通过管道进行传输。这些管道可用于实现数据缓冲或同步功能。

  • 编译器系统。连续的过滤器分别执行:词法分析、语法解析、语义分析和代码生成等操作。
  • 信息处理工作流系统。

这种架构模式通过解耦组件来构建分布式系统。这些组件可以通过远程服务调用实现相互交互。代理组件负责协调组件之间的通信。服务器将其提供的服务功能(包括各种服务特性)发布到代理。客户端向代理请求服务,然后代理根据注册中心的信息将客户端请求重定向到合适的服务提供者。

消息代理软件,如Apache ActiveMQ、Apache Kafka、RabbitMQ和JBoss Messaging等。

在此架构模式中,单个组件被称为对等节点(peer)。对等节点既可以作为客户端向其他对等节点请求服务,也可以作为服务器向其他对等节点提供服务。对等节点可以充当客户端或服务器角色,也可以同时扮演这两种角色,并且其角色可以随时间动态变化。

  • 文件共享网络,如Gnutella和G2等。
  • 基于加密货币的产品,如比特币和区块链技术。

该架构模式主要处理事件相关逻辑,包含四个核心组件:事件源、事件监听器、通道和事件总线。事件源将消息发布到事件总线上的特定通道。监听器订阅特定的通道。当消息发布到它们订阅过的通道时,监听器会收到通知。

  • 安卓应用程序开发
  • 通知服务系统image

这种架构模式将交互式应用程序划分为三个主要部分:1、模型-包含核心业务功能和数据 2、视图-负责将信息展示给用户(可以定义多个视图) 3、控制器-处理来自用户的输入。这种设计旨在将信息的内部表示与信息呈现给用户和从用户接收信息的方式分离。它实现了组件之间的解耦,并支持高效的代码重用。

广泛应用于大多数编程语言中的Web开发架构。

Web开发框架,如Django和Rails等。

这种架构模式适用于解决缺乏确定性解决方案的问题。黑板架构模式由三个主要部分构成。

  • 黑板-结构化的全局内存空间,用于存储解决方案对象
  • 知识源-具有独立表示形式的专用模块
  • 控制组件-负责选择、配置和执行模块。所有组件都可以访问黑板。组件可以生成并添加到黑板上的新数据对象。组件会在黑板上搜索特定类型的数据,并通过与现有知识源进行模式匹配来找到这些数据。
  • 语音识别系统
  • 车辆识别与跟踪系统
  • 蛋白质结构识别系统
  • 声纳信号解析系统

此架构模式用于设计解释专用语言编写的程序组件。它主要规定了如何对程序行进行求值,这些程序被称为用特定语言编写的语句或表达式。其基本设计思想是为语言的每个符号都创建一个对应的类。

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