SuperAPI AI 工具集

abp-infrastructure-patterns

编程与开发

查看项目

更新于 10-15 21:09

技能介绍

用途:整理 ABP Framework 的横切关注点与基础设施模式,帮助在 ABP 项目中实现授权、后台作业、分布式事件、多租户和模块配置。

主要能力:

  1. 授权与权限:以常量类定义层级权限(Parent.Child),通过 PermissionDefinitionProvider 注册权限组与子权限,支持 [Authorize] 声明式、AuthorizationService.CheckAsync 命令式以及 IsGrantedAsync 非抛异常检查。
  2. 后台作业:继承 AsyncBackgroundJob<TArgs> 定义作业,通过 IBackgroundJobManager.EnqueueAsync 入队,可设置 delay 延迟执行,适合长时间或延迟任务。
  3. 分布式事件:实体通过 AddDistributedEvent 发布事件,应用服务可用 IDistributedEventBus.PublishAsync 手动发布;处理器实现 IDistributedEventHandler<TEto>,建议做幂等检查(先查后插/更新),跨租户同步时用 IDataFilter.Disable<IMultiTenant>()。
  4. 多租户:用 ICurrentTenant.Change(tenantId) 切换租户上下文,用 IDataFilter.Disable<IMultiTenant>() 执行跨租户查询;数据种子可按 context.TenantId 区分宿主与租户数据。
  5. 模块配置:通过 [DependsOn] 声明依赖,在 PreConfigureServices、ConfigureServices、OnApplicationInitialization 中配置选项、注册服务与中间件;可用 ObjectExtensionManager 为 Identity 等模块的实体扩展属性。

使用方式:按上述模式在对应层(Domain.Shared、Application.Contracts、Application、Domain)编写权限定义、作业类、事件 ETO 与处理器、模块类。

适用场景:ABP 应用中的权限控制、异步任务调度、模块间解耦通信、多租户数据隔离与跨租户运维、模块化配置与实体扩展。

限制与最佳实践:权限建议层级化定义;后台作业用于长耗时或延迟任务;分布式事件用于模块解耦;事件处理器需保证幂等;IDataFilter.Disable<IMultiTenant>() 应谨慎使用;模块依赖需显式声明。相关技能包括 abp-entity-patterns、abp-service-patterns、openiddict-authorization、distributed-events-advanced。具体版本兼容性与完整 API 细节暂未提供。