分层架构将整个系统视为一种层次结构,其中软件系统被分解为层次结构中不同级别的逻辑模块或子系统。这种方法通常用于设计系统软件,例如网络协议和操作系统。
在系统软件层次结构设计中,低级子系统为其相邻的上层子系统提供服务,这些子系统调用下层的方法。下层提供更具体的功能,如
I/O 服务、事务、调度、安全服务等。中间层提供了更多的领域依赖功能,如业务逻辑和核心处理服务。并且,上层以用户界面的形式提供了更抽象的功能,如GUI、shell编程工具等。
它还用于组织类库,例如命名空间层次结构中的 .NET 类库。所有设计类型都可以实现这种分层架构,并且经常与其他架构样式结合使用。
分层架构风格分为 -
主子程序
这种风格的目的是重用模块并自由开发单个模块或子程序。在这种风格中,软件系统根据系统所需的功能使用自上而下的细化,被划分为子程序。
这些改进是垂直的,直到分解的模块足够简单,可以承担其唯一的独立责任。功能可以由上层的多个调用方重用和共享。
有两种方式可以将数据作为参数传递给子例程,即 -
- 按值传递 - 子例程仅使用过去的数据,但不能修改它。
- 通过引用传递 - 子例程使用并更改参数引用的数据值。
优势 -
易于基于层次结构细化分解系统。
- 可用于面向对象设计的子系统。
缺点
- 易受攻击,因为它包含全球共享的数据。
- 紧密耦合可能会引起更多的变化连锁反应。
主从机
该方法采用“分而治之”的原则,支持故障计算和计算精度。它是对主子程序架构的修改,可提供系统的可靠性和容错能力。
在这种架构中,从站向主站提供重复服务,站通过一定的选择策略在从站中选择特定的结果。从站可以通过不同的算法和方法或完全不同的功能执行相同的功能任务。它包括并行计算,其中所有从站都可以并行执行。
Master-Slave模式的实现遵循五个步骤:
- 指定如何将任务的计算划分为一组相等的子任务,并确定处理子任务所需的子服务。
- 指定如何借助从处理各个子任务中获得的结果来计算整个服务的最终结果。
- 为步骤 1 中标识的子服务定义接口。它将由从站实现,并由主站用来委派各个子任务的处理。
- 根据上一步中开发的规范实现从属组件。
- 根据步骤 1 到 3 中制定的规范实现主控。
应用 -
适用于软件可靠性至关重要的应用。
- 广泛应用于并行和分布式计算领域。
优势 -
更快的计算速度和轻松的可扩展性。
- 提供鲁棒性,因为从站可以复制。
- Slave 可以以不同的方式实现,以最大程度地减少语义错误。
缺点 -
通信开销。
- 并非所有问题都可以划分。
- 难以实现和可移植性问题。
虚拟机体系结构
虚拟机体系结构假装某些功能,这些功能不是实现它的硬件和/或软件所固有的。虚拟机建立在现有系统之上,并提供虚拟抽象、一组属性和操作。
在虚拟机架构中,主服务器使用从服务器的“相同”子服务,并执行拆分工作、调用从服务器和合并结果等功能。它允许开发人员模拟和测试尚未构建的平台,并模拟“灾难”模式,这些模式过于复杂、昂贵或危险,无法用真实系统进行测试。
在大多数情况下,虚拟机将编程语言或应用程序环境与执行平台分离。主要目标是提供可移植性。通过虚拟机对特定模块的解释可以看作是
-
- 解释引擎从被解释的模块中选择一条指令。
- 根据该指令,引擎更新虚拟机的内部状态,并重复上述过程。
下图显示了单个物理计算机上标准 VM 基础结构的体系结构。
虚拟机监控程序(也称为虚拟机监视器)在主机操作系统上运行,并将匹配的资源分配给每个客户机操作系统。当客户机进行系统调用时,虚拟机监控程序会截获并将其转换为主机操作系统支持的相应系统调用。虚拟机管理程序控制每个虚拟机对
CPU、内存、持久存储、I/O 设备和网络的访问。
应用
虚拟机架构适用于以下领域:
- 如果没有直接解决方案,则适合通过模拟或翻译解决问题。
- 示例应用程序包括微编程解释器、XML 处理、脚本命令语言执行、基于规则的系统执行、Smalltalk
和 Java 解释器类型编程语言。
- 虚拟机的常见示例包括解释器、基于规则的系统、语法 shell 和命令语言处理器。
优势 -
便携性和机器平台独立性。
- 软件开发的简单性。
- 通过中断和查询程序的能力提供灵活性。
- 灾害工作模型仿真.
- 在运行时引入修改。
缺点 -
由于解释器的性质,解释器的执行速度很慢。
- 由于执行过程中涉及额外的计算,因此会产生性能成本。
分层风格
在这种方法中,系统在层次结构中被分解为许多上层和下层,每一层在系统中都有自己的唯一责任。
- 每一层都由一组相关类组成,这些类封装在包中、已部署的组件中,或封装为方法库或头文件格式的一组子例程。
- 每一层都为上层提供服务,并作为下层的客户端,即对第 i 层的请求 +1 通过第 i 层的接口调用第
i 层提供的服务。如果任务完成,响应可能会返回到第 i +1 层;否则,第 I 层会不断从下面的第
I 层 -1 调用服务。
应用
分层风格适用于以下领域 -
- 涉及可分层组织的不同服务类的应用程序。
- 可以分解为特定于应用程序和特定于平台的部分的任何应用程序。
- 在核心服务、关键服务和用户界面服务等之间有明确划分的应用程序。
优势 -
基于渐进式抽象级别的设计。
- 提供增强独立性,因为对一层功能的更改最多会影响其他两层。
- 标准接口及其实现的分离。
- 通过使用基于组件的技术来实现,这使得系统更容易实现新组件的即插即用。
- 每一层都可以是独立部署的抽象机器,支持可移植性。
- 易于根据任务的定义以自上而下的细化方式分解系统
- 同一层的不同实现(具有相同的接口)可以互换使用
缺点 -
许多应用程序或系统不容易以分层方式构建。
- 运行时性能较低,因为客户端的请求或对客户端的响应可能要经过多个层。
- 此外,还存在每层数据封送和缓冲的开销方面的性能问题。
- 层间通信的打开可能会导致死锁,“桥接”可能会导致紧密耦合。
- 异常和错误处理是分层体系结构中的一个问题,因为一层中的故障必须向上扩散到所有调用层
|