这是基于vue-vben-admin 模板适用于abp vNext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

12 KiB

插件开发规范

**本文档中引用的文件** - [Program.cs](file://aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Program.cs) - [Program.cs](file://aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/Program.cs) - [PlatformApplicationModule.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationModule.cs) - [AbpOssManagementApplicationModule.cs](file://aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationModule.cs) - [IOssContainerAppService.cs](file://aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssContainerAppService.cs) - [PlatformModuleExtensionConsts.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/ObjectExtending/PlatformModuleExtensionConsts.cs) - [PlatformModuleExtensionConfigurationDictionaryExtensions.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/ObjectExtending/PlatformModuleExtensionConfigurationDictionaryExtensions.cs)

目录

  1. 简介
  2. 项目结构约定
  3. 命名规范
  4. 接口定义标准
  5. 版本管理策略
  6. 安全性要求
  7. 性能基准
  8. 测试覆盖标准
  9. 配置管理实现
  10. 数据访问实现
  11. API暴露实现
  12. 结论

简介

本规范文档为ABP Next Admin系统的插件开发提供完整指南。文档详细说明了插件开发的项目结构约定、命名规范、接口定义标准和版本管理策略。同时,文档还涵盖了插件的安全性要求、性能基准和测试覆盖标准,并通过代码示例展示如何实现常见的插件功能,包括配置管理、数据访问和API暴露。

项目结构约定

ABP Next Admin系统的插件开发遵循模块化架构设计,所有插件都位于特定的目录结构中。系统通过动态加载机制从指定目录加载插件模块。

graph TD
A[主应用程序] --> B[Modules目录]
B --> C[平台管理插件]
B --> D[对象存储管理插件]
B --> E[本地化管理插件]
B --> F[任务管理插件]
B --> G[Webhooks管理插件]
C --> H[应用层]
C --> I[领域层]
C --> J[契约层]
D --> K[应用层]
D --> L[领域层]
D --> M[契约层]

图示来源

  • Program.cs
  • Program.cs

本节来源

  • Program.cs
  • Program.cs

命名规范

插件开发遵循统一的命名规范,确保代码的一致性和可读性。命名规范包括项目命名、类命名和接口命名。

项目命名规范

插件项目名称采用分层命名方式,格式为:LINGYUN.Abp.{模块名}.{层名}。例如:

  • LINGYUN.Abp.Platform.Application - 平台管理应用层
  • LINGYUN.Abp.OssManagement.Application.Contracts - 对象存储管理应用契约层

类命名规范

模块主类采用{模块名}ApplicationModuleAbp{模块名}ApplicationModule的命名方式。例如:

  • PlatformApplicationModule - 平台应用模块
  • AbpOssManagementApplicationModule - 对象存储管理应用模块

接口命名规范

应用服务接口采用I{功能名}AppService的命名方式。例如:

  • IOssContainerAppService - 对象容器应用服务接口
classDiagram
class PlatformApplicationModule {
+ConfigureServices(context)
}
class AbpOssManagementApplicationModule {
+ConfigureServices(context)
}
class IOssContainerAppService {
+CreateAsync(name)
+GetAsync(name)
+DeleteAsync(name)
+GetListAsync(input)
+GetObjectListAsync(input)
}
PlatformApplicationModule --> AbpModule : "继承"
AbpOssManagementApplicationModule --> AbpModule : "继承"
IOssContainerAppService --> IApplicationService : "继承"

图示来源

  • PlatformApplicationModule.cs
  • AbpOssManagementApplicationModule.cs
  • IOssContainerAppService.cs

本节来源

  • PlatformApplicationModule.cs
  • AbpOssManagementApplicationModule.cs
  • IOssContainerAppService.cs

接口定义标准

插件开发中的接口定义遵循ABP框架的标准,确保服务的一致性和可扩展性。

应用服务接口

所有应用服务接口都继承自IApplicationService,并遵循CQRS模式。接口方法命名清晰,参数和返回类型明确。

模块扩展配置

对于需要扩展其他模块功能的插件,使用模块扩展配置机制。通过ModuleExtensionConfigurationDictionary进行配置。

sequenceDiagram
participant Developer as "开发者"
participant Module as "模块"
participant Configuration as "配置系统"
participant Extension as "扩展系统"
Developer->>Module : 创建模块类
Module->>Configuration : 注册模块依赖
Configuration->>Extension : 配置模块扩展
Extension-->>Configuration : 返回配置结果
Configuration-->>Module : 完成模块配置
Module-->>Developer : 模块准备就绪
Note over Developer,Extension : 插件模块配置流程

图示来源

  • PlatformModuleExtensionConsts.cs
  • PlatformModuleExtensionConfigurationDictionaryExtensions.cs

本节来源

  • PlatformModuleExtensionConsts.cs
  • PlatformModuleExtensionConfigurationDictionaryExtensions.cs

版本管理策略

插件开发采用语义化版本管理策略,确保版本的兼容性和可追溯性。

版本号格式

版本号采用主版本号.次版本号.修订号的格式,例如1.2.3

版本兼容性

  • 主版本号变更表示不兼容的API变更
  • 次版本号变更表示向后兼容的功能新增
  • 修订号变更表示向后兼容的问题修正

版本发布流程

  1. 开发新功能或修复问题
  2. 更新版本号
  3. 更新变更日志
  4. 发布到NuGet包管理器

安全性要求

插件开发必须遵循严格的安全性要求,确保系统的整体安全。

认证和授权

所有API端点必须实现适当的认证和授权机制。使用ABP框架的权限系统进行细粒度的权限控制。

输入验证

所有用户输入必须进行严格的验证,防止注入攻击和其他安全漏洞。

数据保护

敏感数据必须进行加密存储,遵循数据保护法规要求。

性能基准

插件开发需要满足特定的性能基准,确保系统的高效运行。

响应时间

  • API请求平均响应时间应小于200ms
  • 95%的请求响应时间应小于500ms

并发处理

插件应能处理至少1000个并发请求,保持系统稳定。

资源使用

  • 内存使用应控制在合理范围内
  • 数据库查询应优化,避免N+1查询问题

测试覆盖标准

插件开发必须达到一定的测试覆盖标准,确保代码质量。

单元测试

  • 核心业务逻辑的单元测试覆盖率应达到80%以上
  • 所有边界条件和异常情况都应有相应的测试

集成测试

  • 关键业务流程的集成测试覆盖率应达到90%以上
  • 数据库交互和外部服务调用应有相应的测试

端到端测试

  • 主要用户场景的端到端测试覆盖率应达到100%
  • UI交互和API调用应有相应的测试

配置管理实现

插件开发中的配置管理遵循统一的标准,确保配置的一致性和可管理性。

配置文件结构

配置文件采用分层结构,支持不同环境的配置。

配置加载机制

使用ABP框架的配置系统,支持从多种来源加载配置,包括:

  • appsettings.json文件
  • 环境变量
  • 用户机密
  • 配置中心
flowchart TD
Start([配置加载开始]) --> CheckEnv["检查环境变量"]
CheckEnv --> EnvFound{"环境变量存在?"}
EnvFound --> |是| UseEnv["使用环境变量配置"]
EnvFound --> |否| CheckAppSettings["检查appsettings.json"]
CheckAppSettings --> AppSettingsFound{"配置文件存在?"}
AppSettingsFound --> |是| UseAppSettings["使用配置文件"]
AppSettingsFound --> |否| CheckUserSecrets["检查用户机密"]
CheckUserSecrets --> UserSecretsFound{"用户机密存在?"}
UserSecretsFound --> |是| UseUserSecrets["使用用户机密"]
UserSecretsFound --> |否| UseDefault["使用默认配置"]
UseEnv --> End([配置加载完成])
UseAppSettings --> End
UseUserSecrets --> End
UseDefault --> End

本节来源

  • Program.cs

数据访问实现

插件开发中的数据访问实现遵循领域驱动设计原则,确保数据的一致性和完整性。

实体框架

使用Entity Framework Core进行数据访问,遵循以下原则:

  • 实体类应位于领域层
  • 仓储接口应位于领域层
  • 仓储实现应位于基础设施层

仓储模式

实现仓储模式,封装数据访问逻辑,提供统一的数据访问接口。

事务管理

使用ABP框架的事务管理机制,确保数据操作的原子性。

API暴露实现

插件开发中的API暴露遵循RESTful设计原则,确保API的一致性和易用性。

控制器设计

控制器应位于应用层,继承自AbpController,并遵循以下原则:

  • 每个控制器负责一个资源的管理
  • 使用标准的HTTP方法对应CRUD操作
  • 返回标准的响应格式

Swagger集成

所有API都应集成Swagger,提供API文档和测试界面。

错误处理

实现统一的错误处理机制,返回标准的错误响应格式。

结论

本规范文档为ABP Next Admin系统的插件开发提供了全面的指导。通过遵循这些规范,开发者可以创建高质量、安全、高性能的插件,确保系统的稳定性和可扩展性。建议所有插件开发者在开发过程中严格遵守这些规范,并定期审查和更新插件以符合最新的安全和性能标准。