有没有想过我们要设计多大的企业级系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,该体系结构将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该了解不同的架构。什么是架构模式?根据维基百科中的定义:架构模式是一种通用的、可重用的解决方案,用于解决给定上下文中软件架构中反复出现的问题。架构模式类似于软件设计模式,但范围更广。在本文中,将简要解释以下10种常见的架构模式,以及它们的用法、优缺点。HierarchicalModeClient-ServerModeMaster-SlaveModePipeline-FilterModeProxyModePoint-to-PointModeEventBusModeModel-View-ControllerModeBlackboardModeInterpreterMode1.HierarchicalMode这种模式也称为多层系统架构模式。它可用于构建可分解??为子任务组的程序,每个子任务都处于特定的抽象级别。每一层都为下一层提供更高级别的服务。一般信息系统中最常见的是下面列出的4层。表示层(又称UI层)应用层(又称服务层)业务逻辑层(又称领域层)数据访问层(又称持久层)使用场景:一般桌面应用电子商务Web应用2.客户端-服务器模型这种模型由两部分组成:一个服务器和多个客户端。服务器组件将服务于多个客户端组件。客户端向服务器请求服务,服务器向这些客户端提供相关服务。此外,服务器会持续侦听客户端请求。使用场景:邮件、文件共享、银行等在线应用3.主从模式该模式由两方组成;主人和奴隶。主组件将工作分配给相同的从组件并计算最终结果,这些结果是从组件返回的结果。使用场景:在数据库复制中,主数据库被认为是权威来源,与计算机系统中连接到总线上的外围设备(主从驱动器)同步。生成和处理数据流的系统。每个处理步骤都封装在过滤器组件中。要处理的数据通过管道传递。这些管道可用于缓冲或同步。使用场景:编译器。连续过滤器执行词法分析、解析、语义分析和代码生成生物信息学工作流程5.代理模式该模式用于构建具有解耦组件的分布式系统。这些组件可以通过远程服务调用相互交互。代理组件负责协调组件之间的通信。服务器向代理发布其功能(服务和特征)。客户端向代理请求服务,代理将客户端重定向到其注册表中的适当服务。使用场景:ApacheActiveMQ、ApacheKafka、RabbitMQ、JBossMessagingVI等消息代理软件。点对点模式在此模式下,各个组件称为对等点。对等点可以充当客户端,向其他对等点请求服务,也可以充当服务器,向其他对等点提供服务。对等点可以充当客户端或服务器或两者兼而有之,并且可以随时间动态更改其角色。使用场景:文件共享网络多媒体协议,如Gnutella和G2,如P2PTV和PDTP专有多媒体应用程序,如SpotifySeven。事件总线模式该模式主要处理事件,包括4个主要组件:事件源、事件监听器、通道和事件总线。消息源将消息发布到事件总线上的特定通道。侦听器订阅特定频道。收听者会收到发布到他们之前订阅的频道的消息通知。使用场景:Android开发通知服务8.模型-视图-控制器模式这种模式也称为MVC模式,将一个交互式应用程序分为3部分,模型:包含核心功能和数据视图:向用户显示信息(多个视图可以被定义)控制器:处理用户输入的信息。这样做是为了将信息的内部表示与其呈现方式分开,并接受用户的请求。它分离组件并允许高效的代码重用。使用场景:主要编程语言的互联网应用程序架构Django和Rails等Web框架9.黑板模式这种模式对于没有定义解决策略的问题很有用。黑板模式由3个主要组件组成。黑板——结构化的全局内存,包含来自解决方案空间的对象知识源——专门的模块和它们自己的表示控制组件——模块的选择、配置和执行所有组件都可以访问黑板。组件可以生成添加到板上的新数据对象。组件在黑板上寻找特定类型的数据,并通过与现有知识源进行模式匹配来实现。使用场景:语音识别车辆识别与跟踪蛋白质结构识别声呐信号解读十.解释器模式该模式用于设计一个组件,该组件解释用特殊语言编写的程序。它基本上指定了如何评估程序行,即用特定语言编写的句子或表达式。基本思想是对每种语言的符号进行分类。使用场景:数据库查询语言如SQL描述通信协议的语言架构模式比较下表给出了每种架构模式的优缺点总结。
