在ASP.NET Core MVC Web 应用程序中使用ABP

本教程将介绍如何开始以最少的依赖关系开始使用ABP开发.

通常情况下你希望从 启动模板 开始.

创建一个新项目

  1. 使用Visual Studio 2022 (17.0.0+)创建一个新的ASP.NET Core Web应用程序:

空Web应用程序 - 图1

  1. 配置新的项目:

空Web应用程序 - 图2

  1. 完成创建:

空Web应用程序 - 图3

安装 Volo.Abp.AspNetCore.Mvc 包

Volo.Abp.AspNetCore.Mvc是ABP集成ASP.NET Core MVC的包,请安装它到你项目中:

  1. Install-Package Volo.Abp.AspNetCore.Mvc

创建ABP模块

ABP是一个模块化框架,它需要一个启动(根)模块继承自 AbpModule:

  1. using Microsoft.AspNetCore.Builder;
  2. using Microsoft.Extensions.Hosting;
  3. using Volo.Abp;
  4. using Volo.Abp.AspNetCore.Mvc;
  5. using Volo.Abp.Modularity;
  6. namespace BasicAspNetCoreApplication
  7. {
  8. [DependsOn(typeof(AbpAspNetCoreMvcModule))]
  9. public class AppModule : AbpModule
  10. {
  11. public override void OnApplicationInitialization(ApplicationInitializationContext context)
  12. {
  13. var app = context.GetApplicationBuilder();
  14. var env = context.GetEnvironment();
  15. // Configure the HTTP request pipeline.
  16. if (env.IsDevelopment())
  17. {
  18. app.UseExceptionHandler("/Error");
  19. // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
  20. app.UseHsts();
  21. }
  22. app.UseHttpsRedirection();
  23. app.UseStaticFiles();
  24. app.UseRouting();
  25. app.UseConfiguredEndpoints();
  26. }
  27. }
  28. }

AppModule 是应用程序启动模块的好名称.

ABP的包定义了模块类,模块可以依赖其它模块.在上面的代码中 AppModule 依赖于 AbpAspNetCoreMvcModule (由Volo.Abp.AspNetCore.Mvc包定义). 安装新的ABP的包后添加DependsOn特性是很常见的做法.

我们在此模块类中配置ASP.NET Core管道,而不是Startup类中.

启动类

接下来修改启动类集成到ABP模块系统:

  1. using BasicAspNetCoreApplication;
  2. var builder = WebApplication.CreateBuilder(args);
  3. builder.Services.ReplaceConfiguration(builder.Configuration);
  4. builder.Services.AddApplication<AppModule>();
  5. var app = builder.Build();
  6. app.InitializeApplication();
  7. app.Run();

services.AddApplication<AppModule>()添加了从AppModule中启动的所有模块中定义的所有服务.

app.InitializeApplication() 初始化并启动应用程序.

运行应用程序!

启动该应用,它将按预期运行.

使用 Autofac 依赖注入框架

虽然ASP.NET Core的依赖注入(DI)系统适用于基本要求,但Autofac提供了属性注入和方法拦截等高级功能,这些功能是ABP执行高级应用程序框架功能所必需的.

用Autofac取代ASP.NET Core的DI系统并集成到ABP非常简单.

  1. 安装 Volo.Abp.Autofac
  1. Install-Package Volo.Abp.Autofac
  1. 添加 AbpAutofacModule 依赖
  1. [DependsOn(typeof(AbpAspNetCoreMvcModule))]
  2. [DependsOn(typeof(AbpAutofacModule))] // 在模块上添加依赖AbpAutofacModule
  3. public class AppModule : AbpModule
  4. {
  5. ...
  6. }
  1. 修改Program.cs以使用Autofac:
  1. using BasicAspNetCoreApplication;
  2. var builder = WebApplication.CreateBuilder(args);
  3. builder.Host.UseAutofac(); //Add this line
  4. builder.Services.ReplaceConfiguration(builder.Configuration);
  5. builder.Services.AddApplication<AppModule>();
  6. var app = builder.Build();
  7. app.InitializeApplication();
  8. app.Run();

源码

此处获取本教程中创建的示例项目的源代码.