这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
软件模式
定义
软件模式描述了特定设计情形下反复出现的设计问题,并提供了已得到充分证明的通用解决方案摘要。解决方案摘要描述模式的组件、组件的职责和关系,以及这些组件协作的方式。
软件模式的层次分类
- 架构模式
- 设计模式
- 代码模式
软件体系(架构模式)
软件架构的目标
- 可靠性(Reliable)
- 安全性(Secure)
- 可扩展性(Scalable)
- 可定制化(Customizable
- 可延伸性(Extensible)
- 可维护性(Maintainable)
- 客户体验(Customer Experience)
- 市场时机(Time to Market)
软件体系结构风格经典分类
分布式系统模式-代理broker模式
结构
Broker模式包含了6类组件:客户端client、客户端代理client-side proxy、代理(中介)broker、网桥bridge(可选组件)、服务器代理server-side proxy、服务器server 注:这里的客户端为发送RPC的server
动态特性
- 服务注册
- 客户端向服务器发送请求(同步或异步)
- 不同代理间通过网桥交互
实现
- 定义对象模型或使用现有模型
- 决定系统应提供什么样的组件互操作性。为支持互操作性,可指定二进制标准,也可引入一种高级接口定义语言(IDL)
- 规定broker组件向客户端和服务器提供的API
- 使用proxy对象隐藏客户端和服务器的实现细节
- 设计broker组件,可与上面3、4两步同步进行
- 给出client-side proxies和server-side proxies之间交互协议的细节
- 对于网络中每一台参与的机器都必须提供一个本地broker供其使用
- 客户端调用服务器的方法时,broker将所有结果和异常返回给客户端
- 如果proxies没有提供调用参数和结果的包封(marshaling)和解封(unmarshaling)机制 ,那么broker就要提供这个功能
- Broker应该包括一个目录服务,用来将服务器标识与服务器地址关联起来
- Broker可能需要提供名字服务,为服务器生成唯一标识
- 如果支持动态方法调用,则需要broker根据记住的服务器类型信息,动态生成调用
- 实现相应的故障处理机制
- 实现IDL编译器
MVC模式
- 模型(model) 组件封装核心数据和功能,独立于输出表示方式和输入行为。
- 视图(view) 组件向用户显示信息。视图从模型那里获取它显示的信息, 一个模型可以有多个视图。
- 每个视图都有相关联的控制器(controller)组件。控制器接受输入,通常是表示鼠标移动、鼠标按钮激活或键盘输入的事件。事件被转换为服务请求,而服务请求要么被发送给模型,要么被发送给视图。用户只通过控制器与系统交互。
三层架构
引用
- 《面向模式的软件体系结构 - 卷1 模式系统》