层次式架构
层次架构是最通用的架构,常作为初始架构
【关注分离】每层只负责本层的工作
- 表现层
- 中间层
- 访问层
- 数据层
MVC架构风格
-
Model(模型)
- 应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型通常为多个视图提供数据。提高应用的可重用性
-
View(视图)
- 用户看到并与之交互的界面。接受用户输入数据,向用户响应数据
-
Controller(控制器)
- 用户界面与Model的接口。解释视图的输入,将其解释为系统能够理解的对象,同时标识用户运作,将其解释为对模型特定方法的调用。处理来自模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈
MVP架构风格
-
模型与视图完全分离,可以修改视图而不影响模型
-
可以更加高效的使用模型,因为所有交互都发生在一个地方【Presenter】内部
-
可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑
-
如果把逻辑放在Presenter中,就可以脱离用户接口来测试这些逻辑【单元测试】
RIA架构风格
案例:HTML5、小程序
【优点】
- 反映速度快
- 易于传播
- 交互性强
物联网分层架构
-
应用层
- 解决信息处理和人机交互问题,处理加工数据并进行返回;应用服务、智能终端
-
网络层
- 传递信息和处理信息,传递感知层的信息;网络、通信标准/协议
-
感知层
- 解决数据获取问题,从外界感知数据;传感器、芯片、通信模组
面向服务架构
构成:
- UDDI(Universal Description, Discovery and Integration)
- UDDI时Web服务注册和查找的标准,通常用于让开发人员发布其Web服务,并在UDDI中搜索并发现可用的Web服务。
- WSDL(Web Service Description Language)
- 描述Web服务接口和操作功的XML格式语言,它允许开发人员定义Web服务的输入和输出消息、操作和端口以便其他人可以使用Web服务。
- SOAP(Simple Object Access Protocol )
- SOAP是一种基于XML的通信协议,用于建立Web服务和服务请求之间的通信
- BPEL(Business Process Execution Language )
- BPEL时一种使用Web服务定义和执行业务流程的语言,允许用户通过组合、编排和协调Web服务自上而下地实现面向服务的架构;使用BPEL,用户可以将多个Web服务组合到一个新的复合服务(业务流程)中,从而实现更高级别的功能。
微服务架构
属于面向服务架构的一种
【优点】
- 复杂应用解耦
- 小服务(且专注于做一件事)
- 化整为零,易于小程序开发
- 独立
- 独立开发
- 独立测试及独立部署
- 独立运行
- 技术选型灵活
- 支持异构 不用语言,不同数据库
- 容错
- 故障被隔离到单个服务中,通过重试、平稳退化等机制实现应用层容错
- 松耦合,易扩展
- 可根据需求独立扩展
【面临的问题与调整】
- 分布式环境下的数据一致性更复杂
- 测试的复杂性,服务间依赖测试难度变大
- 运维的复杂性
【微服务架构模式方案】