软件架构设计,这一章的内容比较多,共7个小节。图文并茂,笔记如下。
1. 软件架构的概念
架构设计就是需求分配,即将满足需求的职责分配到组件上。如下图所示。
2. 软件架构风格
(1)架构设计的一个核心问题是能否达到架构级的软件复用。
(2)架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
(3)架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。
2.1. 经典架构风格
经典架构风格包括以下几种:
2.2. 层次架构风格
层次架构风格包括以下几种:
3. 面向服务的架构(Service-Oriented Architecture,SOA)3.1. SOA概述
SOA是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。
典型的SOA的结构如下图所示:
3.2. SOA的设计原则
在SOA架构中,继承了来自对象和构件设计的各种原则,例如,封装和自我包含等。那些保证服务的灵活性、松散稠合和复用能力的设计原则,对SOA架构来说同样是非常重要的。关于服务,一些常见的设计原则如下:
3.3. SOA的实现方法3.3.1. Web Service
在Web Service(Web服务)的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必须的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了SOA的一种实现架构,如下图所示。
在采用Web Service作为SOA的实现技术时,应用系统大致可以分为六个层次,分别是:
3.3.2. 服务注册表
服务注册表(service registry)虽然也具有运行时的功能但主要在SOA设计时使用。它提供一个策略执行点(Policy Enforcement Point , PEP)在这个点上服务可以在SOA中注册从而可以被发现和使用。
服务注册表可以包括服务注册、服务位置和服务绑定。
3.3.3. 企业服务总线(ESB)
ESB的概念是从SOA发展而来的,它是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,并可帮助企业对业务流程进行设计和模拟对每个业务流程实施控制和跟踪、分析并改进流程和性能。
ESB是由中间件技术实现并支持SOA的一组基础架构,是传统中间件技术与XML,Web Service等技术结合的产物,是在整个企业集成架构下的面向服务的企业应用集成机制。如下图所示。
具体来说,ESB具有以下功能:
4. 微服务4.1. 微服务概述
微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTfuI API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制。对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
4.2. 微服务特点
微服务的特点主要如下:
微服务架构和单块架构对比如下图所示:
4.3. 微服务的优势和挑战
(1)微服务的优势
(2)微服务的挑战
4.4. 微服务和SOA的对比
微服务和SOA的对比如下表所示。
5. 模型驱动架构(Model Driven Architecture,MDA)5.1. 基本概念
一Model?
客观事物的抽象表示
一Architecture?
构成系统的部件、连接件及其约束的规约
一Model Driven?
使用模型完成软件的分析、设计、构建、部署、维护等各开发活动
MDA起源于分离系统规约和平台实现的思想
5.2. MDA的主要目标
5.3. MDA的3种核心模型