当前位置: 首页 > news >正文

3 Abp 核心框架(Core Framework)

ABP 核心框架(Core Framework)

框架架构概述

  • 基础:基于 ASP.NET Core 构建的分层架构,实现领域驱动设计模式和复杂模块系统。
  • 核心:围绕依赖注入、约定配置和扩展点构建。
  • 框架包结构:以 NuGet 包形式分发,通过 Directory.Packages.props 进行集中式版本管理,目标为 .NET 9.0,版本为 10.0.0-preview(定义于 common.props)。
Microsoft Foundation
ABP Core Framework
Third-Party Integrations
.NET 9.0
Microsoft.Extensions.*
ASP.NET Core 9.0
Microsoft.AspNetCore.*
Entity Framework Core 9.0
Microsoft.EntityFrameworkCore.*
Volo.Abp.AutoMapper
AbpAutoMapperModule
Volo.Abp.Autofac
AbpAutofacModule
Volo.Abp.AspNetCore
AbpAspNetCoreModule
Volo.Abp.Core
IAbpApplication
AbpModule
Autofac 8.2.1
Dependency Injection
AutoMapper 14.0.0
Object Mapping
Serilog 4.2.0
Structured Logging

核心组件与服务

ABP 框架由多个基础组件构成,提供横切关注点和基础设施服务。

Framework Extensions
Cross-Cutting Services
Volo.Abp.Core
IBundleManager
Asset Bundling
ITenantResolver
Multi-tenancy
IFeatureChecker
Feature Management
IPermissionChecker
Authorization
IAuditingManager
Audit Logging
IDistributedCache
Caching Abstraction
IConfiguration
Configuration System
IStringLocalizer
Localization
IAbpApplication
Application Lifecycle
AbpModule
Module Definition
IModuleLoader
Module Discovery
IServiceCollection
Service Registration
  • 包依赖项:依赖中央包管理系统中特定版本的 Microsoft 包,如 Microsoft.Extensions.DependencyInjectionMicrosoft.AspNetCore.Authorization 及 Entity Framework Core 包等。

模块化系统

ABP 实现了复杂的模块系统,支持从可重用模块组合应用程序,每个模块可定义依赖、配置服务并提供初始化逻辑。

Module Discovery
Service Registration
Module Definition
AbpModuleLoader
Dependency Graph
Initialization Order
IConventionalRegistrar
ServiceConfigurationContext
IServiceCollection
[DependsOn(typeof(OtherModule))]
ConfigureServices()
OnApplicationInitialization()
MyModule : AbpModule
  • 模块配置:模板项目展示了模块配置模式,例如 Blazor 应用通过项目引用核心框架模块。

依赖注入集成

ABP 扩展了标准 .NET 依赖注入容器,具备常规注册、拦截器和模块感知服务发现等高级功能。

Service Types
Registration Strategies
Container Integration
IScopedDependency
ISingletonDependency
ITransientDependency
IConventionalRegistrar
Convention - based
Registration
Explicit Registration
(Configure)
Castle DynamicProxy
Interceptor
Microsoft.Extensions.DI
IServiceCollection
AbpServiceCollectionExtensions
Autofac.Extensions.DI
ContainerBuilder
  • 容器配置:框架默认使用 Autofac 作为依赖注入容器,通过 Volo.Abp.Autofac 包配置,Autofac 版本集中管理以确保框架组件一致性。

构建与打包系统

ABP 拥有完善的构建系统,协调多个解决方案和项目的编译、测试和打包。

  • 解决方案结构:构建系统处理 build/common.ps1 中定义的多个解决方案路径,支持开发模式和带 -f 标志的完整构建。
  • 包管理:所有 NuGet 包使用集中式版本管理,通过自动化 PowerShell 脚本构建和打包,处理依赖协调和版本同步。
  • 测试基础设施:通过 build/test-all.ps1 实现全面的测试自动化,执行所有解决方案的测试并收集代码覆盖率。

配置与选项系统

ABP 扩展了 .NET 配置系统,提供强类型选项、验证和模块特定配置范围。

  • 模板配置:模板项目通过 common.props 文件展示配置模式,定义项目元数据、警告和构建设置,继承框架级设置同时保持自身版本控制。
  • 全局属性common.props 定义框架范围的属性,包括版本、目标框架、许可证和适用于所有框架组件的包元数据。
http://www.xdnf.cn/news/1286389.html

相关文章:

  • 京东方 DV133FHM-NN1 FHD13.3寸 工业液晶模组技术档案
  • 在Colab上复现LoRA相关论文实验的完整指南
  • 跨设备开发不再难:HarmonyOS 分布式任务管理应用全解析
  • 人机交互:连接人类与数字世界的桥梁
  • 基于柔性管控终端的新能源汽车充电站有序充电系统设计与实现
  • Docker容器部署论坛和网上商城(小白的“升级打怪”成长之路)
  • 1 JQ6500语音播报模块详解(STM32)
  • 电机极数2极、4极、6极、8极的区别
  • 电子电路原理学习笔记---第5章特殊用途二极管---第2天
  • PaddlePaddle 模型训练技巧
  • Myqsl建立库表练习
  • Spark on K8s 在vivo大数据平台的混部实战
  • Go 语言 里 `var`、`make`、`new`、`:=` 的区别
  • 深入解析ArrayList与LinkedList的区别:如何正确选择?
  • 游戏中角色持枪:玩家操控角色,角色转向时枪也要转向
  • Java集合学习之forEach()遍历方法的底层原理
  • 【Unity3D实例-功能-下蹲】角色下蹲(二)穿越隧道
  • 人工智能+虚拟仿真,助推医学检查技术理论与实践结合
  • Linux环境gitlab多种部署方式及具体使用
  • [论文阅读] (41)JISA24 物联网环境下基于少样本学习的攻击流量分类
  • 完整多端口 Nginx Docker部署 + GitLab Runner注册及标签使用指南
  • 使用 NetBird 创建安全的私有网络,简化远程连接!
  • 【论文阅读】从表面肌电信号中提取神经信息用于上肢假肢控制:新兴途径与挑战
  • 终端安全检测和防御技术总结
  • Java数据结构之ArrayList
  • [激光原理与应用-256]:理论 - 几何光学 - CMOS与CCD传感器成像原理比较
  • 卫生间装修防水怎么做合适?
  • 激光干涉法在碳化硅衬底 TTV 厚度测量中的精度提升策略
  • 高性能web服务器Tomcat
  • Vue 3 + Elementui + TypeScript 实现左侧菜单定位右侧内容