层次式架构

层次架构是最通用的架构,常作为初始架构

【关注分离】每层只负责本层的工作

  • 表现层
  • 中间层
  • 访问层
  • 数据层

MVC架构风格
  • Model(模型)
    • 应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型通常为多个视图提供数据。提高应用的可重用性
  • View(视图)
    • 用户看到并与之交互的界面。接受用户输入数据,向用户响应数据
  • Controller(控制器)
    • 用户界面与Model的接口。解释视图的输入,将其解释为系统能够理解的对象,同时标识用户运作,将其解释为对模型特定方法的调用。处理来自模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈

MVP架构风格
  • 模型与视图完全分离,可以修改视图而不影响模型
  • 可以更加高效的使用模型,因为所有交互都发生在一个地方【Presenter】内部
  • 可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑
  • 如果把逻辑放在Presenter中,就可以脱离用户接口来测试这些逻辑【单元测试】

RIA架构风格

image-20241010225718075

案例: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服务组合到一个新的复合服务(业务流程)中,从而实现更高级别的功能。

微服务架构

属于面向服务架构的一种

【优点】
  • 复杂应用解耦
    • 小服务(且专注于做一件事)
    • 化整为零,易于小程序开发
  • 独立
    • 独立开发
    • 独立测试及独立部署
    • 独立运行
  • 技术选型灵活
    • 支持异构 不用语言,不同数据库
  • 容错
    • 故障被隔离到单个服务中,通过重试、平稳退化等机制实现应用层容错
  • 松耦合,易扩展
    • 可根据需求独立扩展
【面临的问题与调整】
  • 分布式环境下的数据一致性更复杂
  • 测试的复杂性,服务间依赖测试难度变大
  • 运维的复杂性
【微服务架构模式方案】

image-20241013151333852