知识卡片
元模型架构与REST架构风格的解耦机制
内容
基于元模型的架构和微内核架构一样,都以适应变化、支持长生命周期为主要目标,包含基本层和元层两层:基本层定义具体应用,元层通过”元对象”(如Meta A)来调用基本层的对象(如对象A),从而解除了应用对具体对象的直接依赖,使整个架构获得低耦合——元层包含一组元对象,这些元对象组成的模型称为”元模型”,元模型是对基本层中”一切”的抽象,从结构、行为、状态三个方面对基本层做自描述。这个”元层间接调用”的思路与微内核的”插件不直接依赖核心系统的具体实现、而是通过注册器交互”是同一类解耦逻辑的不同变体:都是插入一层间接性,把”谁调用谁”的直接绑定,转化成”通过某个中介描述来调用”的间接绑定。REST(表述性状态转移)是Web自身的架构风格,是Web之所以成功的关键技术架构因素之一,专为运行在互联网环境中的分布式超媒体系统定制。理解REST的解耦机制需要理解五个关键概念:资源(把服务器看作由很多离散的、可命名的抽象概念组成,每个资源由一个或多个URI标识);资源的表述(资源在某个时刻状态的描述,可用HTML/XML/JSON等多种格式,具体格式通过协商机制确定);状态转移(在客户端和服务器之间转移代表资源状态的表述,通过转移和操作表述来间接实现操作资源的目的);统一接口(对每个资源只能执行一组有限的操作,操作语义必须由HTTP消息体之前的部分完全表达,不能封装在消息体内部,这是为了提高交互可见性,让通信链中的中间组件也能实现缓存、安全审计等功能);超文本驱动(HATEOAS,把Web应用看作一个由很多状态组成的有限状态机,资源间通过超链接关联,超链接既代表资源关系也代表可执行的状态迁移,客户端应该依赖超媒体的状态迁移语义、而不应该对某个URI是否存在或如何构造做假设——因为一切都可能变化,只有超媒体的状态迁移语义能长期保持稳定)。”统一接口+超文本驱动”这两者结合带来了REST架构风格能达到的最大限度松耦合,让服务器端和客户端程序可以在很大范围内相对独立地演进——书中特别指出,这种松耦合对面向企业内网的API设计不算太重要的关注点,但对面向互联网的API设计而言是一个必选项,必须放在最优先的位置。