在AspNet Core MVC Web Application中使用ABP

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

通常情况下你需要下载一个 启动模板

创建一个新项目

  1. 使用Visual Studio 2019 (16.4.0+)创建一个新的AspNet Core Web Application:

空Web应用程序 - 图1

  1. 配置新的项目:

空Web应用程序 - 图2

  1. 完成创建:

空Web应用程序 - 图3

安装 Volo.Abp.AspNetCore.Mvc 包

Volo.Abp.AspNetCore.Mvc是ABP集成AspNet 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(
  12. ApplicationInitializationContext context)
  13. {
  14. var app = context.GetApplicationBuilder();
  15. var env = context.GetEnvironment();
  16. if (env.IsDevelopment())
  17. {
  18. app.UseDeveloperExceptionPage();
  19. }
  20. else
  21. {
  22. app.UseExceptionHandler("/Error");
  23. }
  24. app.UseStaticFiles();
  25. app.UseRouting();
  26. app.UseConfiguredEndpoints();
  27. }
  28. }
  29. }

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

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

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

启动类

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

  1. using Microsoft.AspNetCore.Builder;
  2. using Microsoft.Extensions.DependencyInjection;
  3. namespace BasicAspNetCoreApplication
  4. {
  5. public class Startup
  6. {
  7. public void ConfigureServices(IServiceCollection services)
  8. {
  9. services.AddApplication<AppModule>();
  10. }
  11. public void Configure(IApplicationBuilder app)
  12. {
  13. app.InitializeApplication();
  14. }
  15. }
  16. }

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

Configure方法中的app.InitializeApplication()完成初始化并启动应用程序.

运行应用程序!

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

使用 Autofac 依赖注入框架

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

用Autofac取代AspNet 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 Microsoft.AspNetCore.Hosting;
  2. using Microsoft.Extensions.Hosting;
  3. namespace BasicAspNetCoreApplication
  4. {
  5. public class Program
  6. {
  7. public static void Main(string[] args)
  8. {
  9. CreateHostBuilder(args).Build().Run();
  10. }
  11. public static IHostBuilder CreateHostBuilder(string[] args) =>
  12. Host.CreateDefaultBuilder(args)
  13. .ConfigureWebHostDefaults(webBuilder =>
  14. {
  15. webBuilder.UseStartup<Startup>();
  16. })
  17. .UseAutofac(); // 添加这一行
  18. }
  19. }

源码

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