ABP Framework 中的 MVC 和 Razor Pages
该页面详细介绍了 ABP Framework 与 ASP.NET Core MVC 和 Razor Pages 的集成,涵盖框架组件、项目模板、主题系统和模块集成模式等内容,提供了 ABP 应用程序中传统的服务器端 Web UI 选项。
框架集成组件
ABP 提供了多个核心包用于 MVC 和 Razor Pages 集成,以扩展 ASP.NET Core 的功能,主要包括:
项目模板类型
ABP 提供了多种 MVC/Razor Pages 项目模板,适用于不同的架构模式和部署场景。
应用程序模板
模板类型 |
项目名称 |
目的 |
主要功能 |
Layered Web Application |
MyCompanyName.MyProjectName.Web |
全功能 Web 应用程序 |
完整的业务层集成 |
Tiered Web Host |
MyCompanyName.MyProjectName.Web.Host |
分布式架构的前端 |
HTTP 客户端集成、Redis 缓存 |
Authentication Server |
MyCompanyName.MyProjectName.AuthServer |
专用身份验证服务 |
OpenIddict 集成、分布式锁定 |
无分层 MVC |
MyCompanyName.MyProjectName.Mvc |
简化的单项目结构 |
一体化架构 |
数据库提供程序支持
模板通过不同的项目变体支持多种数据库提供程序:
- SQL Server:默认的 Entity Framework Core 集成
- MongoDB:带有 MongoDB 提供程序的 NoSQL 替代方案
- Multiple Providers:通过单独的包支持 Oracle、PostgreSQL、MySQL
主题系统集成
MVC 集成包含一个全面的主题系统,提供跨应用程序的一致 UI 组件和样式。
模块集成模式
ABP MVC 应用程序通过一致的模式与业务模块集成,同时提供后端服务和 UI 组件。
资产管理与打包
MVC 应用程序使用 ABP 的打包系统进行高效的 CSS 和 JavaScript 管理。
打包配置
打包系统处理以下内容:
- CSS/JS 压缩和组合
- 特定主题的资源加载
- 开发与生产环境的优化
- 外部库的 CDN 集成
文件组织模式:
Pages/
├── **/*.js # 页面特定的 JavaScript
├── **/*.css # 页面特定的 CSS
└── Shared/
├── _Layout.cshtml
└── Components/
身份验证和授权集成
MVC 应用程序通过多个组件与 ABP 的身份验证和授权系统集成。
配置和部署
项目配置
MVC 项目包括标准的 ABP 配置模式:
- User Secrets:开发时配置存储
- Embedded Resources:本地化文件和证书
- Runtime Compilation:开发中的 Razor 视图编译
- Logging:结构化日志的 Serilog 集成
常见项目属性:
TargetFramework
:net9.0
Nullable
:enable
MvcRazorExcludeRefAssembliesFromPublish
:false(用于正确的 Razor 编译)
PreserveCompilationReferences
:true(用于运行时编译)
开发与生产环境
模板支持开发和生产环境的不同配置:
开发环境功能:
- 运行时 Razor 编译
- 嵌入式文件提供程序
- 用户机密集成
- 详细错误页面
生产环境功能:
- 资源打包和压缩
- 使用 Redis 的分布式缓存
- 使用 Redis 的数据保护
- 分布式锁定