SuperAPI AI 工具集

aspnet-boilerplate-modules

编程与开发

查看项目

更新于 10-15 10:10

技能介绍

用途

本技能用于指导开发者使用 ASP.NET Boilerplate(ABP)框架进行模块化开发。ABP 是一个开源应用框架,提供构建模块并将模块组合成应用的基础设施,其模块系统聚焦于服务端开发。技能的目标是帮助开发者按照 ABP 约定与最佳实践创建、配置和维护 ABP 模块。

技术栈

  • 框架:ASP.NET Boilerplate
  • .NET 版本:兼容 .NET Framework 与 .NET Core
  • 模块系统:AbpModule 基类
  • 依赖注入:Castle Windsor
  • 架构:N 层架构

主要能力

模块定义

模块通过派生自 AbpModule 的类定义,并在 Initialize 中调用 IocManager.RegisterAssemblyByConvention 完成约定注册。使用 DependsOn 特性声明模块依赖,可声明单个或多个依赖。

模块生命周期方法

ABP 在应用启动和关闭时调用特定方法:

  • PreInitialize:应用启动时最先调用,用于在模块初始化前配置框架和其他模块、注册约定注册类、在依赖注入注册之前编写代码。
  • Initialize:进行依赖注入注册的位置。
  • PostInitialize:启动过程中最后调用,可安全解析依赖。
  • Shutdown:应用关闭时调用,用于清理资源。

生命周期顺序(模块 A 依赖 B):启动为 PreInitialize-B → PreInitialize-A → Initialize-B → Initialize-A → PostInitialize-B → PostInitialize-A;关闭为 Shutdown-A → Shutdown-B。

常用 ABP 模块

  • AbpKernelModule:核心模块,提供依赖注入、事件总线、日志、配置、本地化等基础基础设施。
  • AbpAutoMapperModule:基于 AutoMapper 的对象到对象映射。
  • AbpEntityFrameworkModule:Entity Framework 集成。
  • AbpZeroCoreModule:Module Zero 核心,提供多租户、授权、用户、角色能力。

模块配置

可定义模块设置类,通过 Configuration.Settings.Providers.Add 添加设置提供器,并实现 SettingProvider 的 GetSettingDefinitions 返回 SettingDefinition(可指定作用域,如 Application、Tenant)。

依赖注入

  • 约定注册:RegisterAssemblyByConvention 会自动将 ITransientDependency 注册为 transient、ISingletonDependency 注册为 singleton、IScopedDependency 注册为 scoped。
  • 手动注册:使用 IocManager.Register 指定 DependencyLifeStyle。
  • 拦截器:可在 PreInitialize 中订阅 IocContainer.Kernel.ComponentRegistered,为满足条件的实现添加拦截器(如 AuthorizationInterceptor)。

插件模块

支持动态模块加载:ASP.NET Core 中通过 services.AddAbp 的 options.PlugInSources.AddFolder 添加插件目录;ASP.NET MVC 中通过 AbpBootstrapper.PlugInSources.AddFolder 添加,并可使用 AddToBuildManager 支持插件中的控制器。

自定义模块方法

模块可定义自定义方法供其他模块调用;依赖模块可通过构造函数注入被依赖模块实例并在 PreInitialize 中调用其方法。

附加程序集

可重写 GetAdditionalAssemblies 以包含额外程序集。

常见模块模式

  • 数据访问模块:依赖 AbpEntityFrameworkModule,在 PreInitialize 中配置连接字符串与 DbContext。
  • 应用服务模块:依赖 AbpKernelModule 与 AbpAutoMapperModule,配置 AutoMapper 映射。
  • Web 模块:依赖 AbpAspNetCoreModule。

使用方式

本技能以专家指导形式提供,内容为 ABP 模块开发的约定、代码示例与模式说明。开发者可参照其中的模块定义、生命周期、依赖声明、配置与依赖注入示例编写代码。技能中给出的代码示例可直接参考,但需结合具体项目调整。

适用场景

  • 基于 ABP 构建模块化服务端应用
  • 需要按 ABP 约定组织模块依赖与生命周期
  • 需要配置模块设置、依赖注入与拦截器
  • 需要实现插件式动态模块加载
  • 需要排查模块未找到、依赖注入不生效、配置未应用、生命周期问题等常见故障

限制

资料未提供该技能的安装命令、收费方式、价格、平台支持范围或效果保证等信息,暂未提供。技能内容聚焦服务端模块系统,未涉及客户端或前端模块化开发的说明。