导图社区 10种架构模式
软件设计中的10中架构模式,架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。
编辑于2022-02-17 17:40:52社区模板帮助中心,点此进入>>
架构模式
1)分层模式
常见分层
表示层(也称为UI层)
应用层(也称为服务层)
业务逻辑层(也称为领域层)
数据访问层(也称为持久化层)
2)客户端-服务器模式
架构图
3)主从设备模式
在数据库复制中,主数据库被认为是权威的来源,并且要与之同步
在计算机系统中与总线连接的外围设备(主和从驱动器)
4)管道-过滤器模式
概念
可用于构造生成和处理数据流的系统。每个处理步骤都封装在一个过滤器组件内。
要处理的数据是通过管道传递的。这些管道可以用于缓冲或用于同步。
使用场景
编译器。连续的过滤器执行词法分析、解析、语义分析和代码生成
生物信息学的工作流
逻辑图
5)代理模式
用于构造具有解耦组件的分布式系统。这些组件可以通过远程服务调用彼此交互。代理组件负责组件之间的通信协调。
服务器将其功能(服务和特征)发布给代理。客户端从代理请求服务,然后代理将客户端重定向到其注册中心的适当服务。
使用场景:消息代理软件,如Apache ActiveMQ,Apache Kafka,RabbitMQ和JBoss Messaging
6)点对点模式
单个组件被称为对等点。对等点可以作为客户端,从其他对等点请求服务,作为服务器,为其他对等点提供服务。
对等点可以充当客户端或服务器或两者的角色,并且可以随时间动态地更改其角色。
使用场景
像Gnutella和G2这样的文件共享网络
多媒体协议,如P2PTV和PDTP
像Spotify这样的专有多媒体应用程序
7)事件总线模式
主要是处理事件,包括4个主要组件:事件源、事件监听器、通道和事件总线。
消息源将消息发布到事件总线上的特定通道上。侦听器订阅特定的通道。 侦听器会被通知消息,这些消息被发布到它们之前订阅的一个通道上。
8)模型-视图-控制器模式
MVC
定义
模型(model)
通过域对象,结合某些业务逻辑存储和操作数据库状态的类
视图(View)
用户界面部分,用于将模型呈现给用户
控制器(Controller)
作用于模型和视图上,它控制数据流向模型对象,并在数据变化时更新视图
结构图
与WebForm比较
WebForm
简单状态管理,基于ViewState和PostBack模型
显示逻辑和代码存在耦合导致难以进行单元测试,控件的状态管理导致页面庞大
PostBack导致难以控制浏览器和服务器之间的通信
MVC
提供了对HTML页面的全面控制、生成的页面更加简洁
能够支持多种视图引擎(例如Brail、NHaml、NVelocity)
方便地整合jQuery等JS框架,并支持ASP.NET的所有核心功能
默认使用RESTful风格(有助于SEO)
没有提供ViewState和PostBack模型,难以保存页面状态
工作过程比较
WebForm
MVC
视图
MVC架构默认使用WebFormViewEngine视图引擎
MVC视图对象
ViewMasterPage
ViewPage
ViewUserControl
ViewData和模型
ViewData用于呈现视图存储和传送来自模型和控制器的数据
TempData
用于保存临时会话数据的字典,可以被当前或者下一个请求使用
Action
返回结果类型
ActionResult
FileResult
ViewResultBase
基本返回类型
ContentResult
EmptyResult
HttpUnauthorizedResult
JavaScriptResult
JsonResult
FileContentResult
FilePathResult
FileStreamResult
RedirectResult
RedirectToRouteResult
ViewResult
PartialViewResult
控制器
URL路由
告诉控制器工厂应该实例化哪个控制器及执行控制器中的哪个操作
控制器工厂
默认控制器工厂是DefaultControllerFactory
MVP
架构图
关系图
构成
Model
View
Presenter
以Presenter为核心,负责从model获取数据,并填充到View中。 该模型使得Model和View不再有联系,且View被称为“被动视图”,暴露出setter接口
与MVC区别
1.View不直接与Model交互,而是通过与Presenter交互来与Model间接交互 2.Presenter与View的交互是通过接口来进行的,更有利于添加单元测试 3.通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑,业务相似的时候也可以多同个View共享一个Presenter。
MVC模式: 1.View可以与Model直接交互 2.Controller是基于行为的,并且可以被多个View共享 3.Controller可以负责决定显示哪个View
MVVM
构成
(模型)Model
(视图模型)ViewModel
(视图)View
架构
View与VM保持同步,View绑定到VM的属性上,如果VM数据发生变化, 通过数据绑定的方式,View会自动更新视图
MVT(django)
是python中django框架使用的一种架构模式
构成
models
views
templates
架构图
9)黑板模式
对于没有确定解决方案策略的问题是有用的。由3个主要组成部分组成
黑板——包含来自解决方案空间的对象的结构化全局内存
知识源——专门的模块和它们自己的表示
控制组件——选择、配置和执行模块
所有的组件都可以访问黑板。组件可以生成添加到黑板上的新数据对象。
组件在黑板上查找特定类型的数据,并通过与现有知识源的模式匹配来查找这些数据。
使用场景
语音识别
车辆识别和跟踪
蛋白质结构识别
声纳信号的解释
10)解释器模式
用于设计一个解释用专用语言编写的程序的组件。它主要指定如何评估程序的行数,即以特定的语言编写的句子或表达式。其基本思想是为每种语言的符号都有一个分类。
使用场景
数据库查询语言,比如SQL
用于描述通信协议的语言
逻辑图
各个架构模式的比较