更新时间:2025-01-09 GMT+08:00
分享

devspore-horizon介绍

扩展拦截功能依赖devspore-horizon组件实现。devspore-horizon是DevSpore开发框架提供的一种插件机制,用户可以在请求被处理前(Entry)和应答发送前(Exit)调用DevSpore预置的插件,也可以使用自己开发的插件,用于实现统一的操作前认证、鉴权,操作后消息发送、缓存更新、审计等功能。

常用概念

DTO:是一种数据传输对象,主要用于在不同层之间传输数据。

DO:是一种领域对象,用于表示业务领域中的实体或概念。

horizon整体架构

devspore-horizon架构图如下:

图1 架构图
  • Entry类插件采用的是责任链模式(chain of resposibility),所有的插件按照被注册的顺序依次调用,其中有一个插件抛出异常则整个请求返回失败。
  • Exit类插件采用的是观察者模式(Observer),所有的插件作为观察者注册,DevSpore运行时库里的Publisher模块同时调用所有的观察者插件(插件可能被并发执行且执行的顺序随机),插件执行的结果不能影响请求返回。

实现流程

devspore-horizon整体流程概括如下:

图2 实现流程

典型案例

devspore-horizon允许用户用内置的鉴权和消息发送插件,也支持用户自定义插件来自主实现鉴权(认证等)和消息发送(审计等)。

下图为一个典型的使用案例:

图3 典型案例

如何实现horizon功能

只要实现了相应接口,填写配置信息即可实现horizon功能。

图1中描述,horizon开放了两种插件入口拦截Entry插件出口拦截Exit插件其中统一认证和统一鉴权需要实现Entry插件;而变更通知、更新缓存、统一审计、统一工作流需要实现Exit插件。

相关文档