Introduce(插件系统简介)

概述

本后端系统提供了一个插件系统,允许开发者通过实现 IPluginInterceptor 接口来扩展系统的行为。插件可以在请求执行前后进行拦截,并执行自定义逻辑。插件管理器 (PluginManager) 负责加载、管理和执行这些插件。

插件管理器 (PluginManager)

PluginManager 是插件功能的核心类,负责加载插件、管理插件实例以及执行插件的拦截逻辑。

主要功能

  1. 加载插件PluginManager 会扫描指定目录下的插件,并加载所有实现了 IPluginInterceptor 接口的类。

  2. 插件拦截:插件可以在请求执行前后进行拦截,执行自定义逻辑。

  3. 插件信息管理:每个插件可以附带元数据(如名称、描述、作者等),PluginManager 会记录这些信息并提供查询接口。

主要方法

  • GetPluginDirectory(): 获取插件目录列表。

  • LoadPlugins(IServiceCollection services): 加载插件并将其注册到依赖注入容器中。

  • GetLoadedPlugins(): 获取已加载插件的元数据。

  • ExecuteBeforeAsync(string route, object?[] args, string? username = null): 在请求执行前调用插件的 OnBeforeExecutionAsync 方法。

  • ExecuteAfterAsync(string route, object? result, string? username = null): 在请求执行后调用插件的 OnAfterExecutionAsync 方法。

  • RegisterPluginRoutes(IEndpointRouteBuilder endpoints): 注册路由

插件接口 (IPluginInterceptor)

IPluginInterceptor 是插件必须实现的接口,定义了插件在请求执行前后可以执行的操作。

方法

  • OnBeforeExecutionAsync(string route, object?[] args, string? username = null): 在请求执行前调用,可以修改请求参数或阻止请求继续执行。

  • OnAfterExecutionAsync(string route, object? result, string? username = null): 在请求执行后调用,可以修改返回结果或执行其他操作。

  • RegisterRoutes(IEndpointRouteBuilder endpoints) :在程序启动时调用,用于注册路由

Last updated