大家是否思考过如何设计大型企业级系统?在进行主要的软件开发之前,我们先得选择一个合适的架构。这个架构要给我们所需的功能和质量保证。因此,在将这些架构用于我们的设计之前,我们应该理解不同的架构体系。
根据 Wikipedia 解释,
一个架构模式就是,在给定上下文条件下,解决软件架构中常见问题的一个通用、可复用的解决方案。架构模式类似于软件设计模式,但范围更广。
在这篇文章中,我将简单介绍以下十种常见的架构模式的用法,及其优缺点。
这种模式用于构建能被拆分为一组子任务的程序,每个子任务是一个特殊的抽象层。每层向更高一层提供服务。
下面是通用信息系统中,最常见的 4 层:
用法:
这种模式由两部分组成,一个服务端和多个客户端。服务端组件将给多个客户端组件提供服务。客户端从服务端请求服务,服务端提供相关的服务给这些客户端。此外,服务端会持续监听客户端的请求。
用法:
这种模式由两部分组成,master 和 slaves 。master 组件分发任务给同等的 slave 组件,获取 slave 返回的结果之后,计算最终的结果。
用法:
这种模式用于构建生产和处理数据流的系统。每个处理步骤都包含一个过滤器组件。需要被处理的数据才能够通过管道。这些管道能起到缓存或同步的作用。
用法:
这种模式用于构建具有解耦组件的分布式系统。这些组件通过远程调用进行通信。 Broker 组件负责协调其他组件的通信。
服务将其功能(服务地址和特征)发布到 Broker 。客户端向 Broker 请求一个服务时,Broker 查询注册表,将客户端的请求重定向到合适的服务地址。
用法:
在这种模式下,各个组件被称为对等端。对等端既可以作为客户端,向其他对等端请求服务,也可以作为服务端向其他对等端提供服务。对等端可以充当客户端或服务端,亦或同时都是,而且可以随时改变其角色。
用法:
这种模式主要处理事件,具有 4 个主要的组件,事件源,事件监听者,通道,事件总线。事件源将消息发布到事件总线上特定的通道。事件监听者订阅特定的通道。当有消息进入通道时,之前订阅过相关通道的监听者将会收到消息通知。
用法:
这种模式也被称为 MVC 模式,将一个交互式应用分为 3 个部分:
这样做是为了将程序内部的信息与展示给用户的信息,以用户能接受的方式分开。从而解耦组件,并且可以提高代码的复用率。
用法:
这种模式对于没有确定性解决方案的问题很有用。黑板模式主要由 3 部分组成:
所有的组件都可以访问黑板。组件可以生成新的数据对象添加到黑板。组件可以在黑板上查看特定类型的数据,也可以使用现有知识源通过模式匹配查找数据。
用途:
这种模式用于设计一个解释专用语言编写的程序的组件。它主要指定如何计算每一行程序,也就是用特定语言编写的句子或表达式。其基本思想是语言的每个符号都有一个类。
用法: