用途:整理 ABP Framework 的横切关注点与基础设施实现模式,供开发者在分层应用中统一处理权限、异步任务、事件与多租户。
主要能力:1) 授权与权限:用静态类定义权限常量(Parent.Child 层级),通过 PermissionDefinitionProvider 注册权限组与子权限,支持声明式 [Authorize] 与命令式 AuthorizationService.CheckAsync/IsGrantedAsync。2) 后台作业:继承 AsyncBackgroundJob<TArgs> 定义作业,用 IBackgroundJobManager.EnqueueAsync 入队并支持 delay 延迟执行。3) 分布式事件:实体通过 AddDistributedEvent 发布事件,或由 IDistributedEventBus.PublishAsync 手动发布,处理器实现 IDistributedEventHandler<TEto>;示例给出幂等与多租户安全写法,如先用 FirstOrDefaultAsync 检查存在再插入,并用 IDataFilter.Disable<IMultiTenant>() 跨租户同步。4) 多租户:用 IDataFilter 禁用多租户过滤实现跨租户查询,用 ICurrentTenant.Change(tenantId) 切换租户上下文,数据种子按 context.TenantId 区分主机与租户数据。5) 模块配置:通过 [DependsOn] 声明依赖,在 PreConfigureServices/ConfigureServices/OnApplicationInitialization 中配置选项、注册服务与应用初始化;用 ObjectExtensionManager 为用户等对象扩展属性。
使用方式:按上述模式在 Domain.Shared、Application.Contracts 与 Application 层分别定义权限、作业、事件处理器与模块类,代码示例保持原样,可直接参考。
适用场景:ABP 应用中需要统一权限体系、延迟/长任务、模块解耦事件通信及多租户数据隔离与跨租户同步的场景。
限制:多租户过滤禁用应谨慎使用;事件处理器需自行保证幂等;资料未提供具体版本要求、性能数据、收费与平台信息。