[Abp 源码分析]十七、ASP.NET Core 集成

 目录

 

正文

0. 简介

整个 Abp 框架最为核心的除了 Abp 库之外,其次就是 Abp.AspNetCore 库了。虽然 Abp 本身是可以用于控制台程序的,不过那样的话 Abp 就基本没什么用,还是需要集合 ASP.NET Core 才能发挥它真正的作用。

在 Abp.AspNetCore 库里面,Abp 通过 WindsorRegistrationHelper.CreateServiceProvider() 接管了 ASP.NET Core 自带的 Ioc 容器。除此之外,还针对 Controller的生成规则也进行了替换,以便实现 Dynamic API 功能。

总的来说,整个 Abp 框架与 ASP.NET Core 集成的功能都放在这个库里面的,所以说这个库还是相当重要的。这个项目又依赖于 Abp.Web.Common 库,这个库是存放了很多公用方法或者工具类的,后面也会有讲述。

1. 启动流程

首先在 Abp.AspNetCore 库里面,Abp 提供了两个扩展方法。

  • 第一个则是 AddAbp<TStartupModule>() 方法。

    该方法是 IServiceCollection 的扩展方法,用于在 ASP.NET Core 项目里面的 Startup 的 ConfigureService() 进行配置。通过该方法,Abp 会接管默认的 DI 框架,改为使用 Castle Windsor,并且进行一些 MVC 相关的配置。

  • 第二个则是 UseAbp() 方法。

    该方法是 IApplicationBuilder 的扩展方法,用于 Startup 类里面的 Configure() 配置。通过该方法,Abp 会执行一系列初始化操作,在这个时候 Abp 框架才算是真正地启动了起来。

下面则是常规的用法:

public class Startup {     public IServiceProvider ConfigureServices(IServiceCollection services)     {         services.AddMvc();         return services.AddAbp<AspNetCoreAppModule>();     }      public void Configure(IApplicationBuilder app, IHostingEnvironment env)     {         app.UseMvc();         app.UseAbp();     } }

基本上可以说,UseAbp() 就是整个 Abp 框架的入口点,负责调用 AbpBootstrapper 来初始化整个 Abp 项目并加载各个模块。

2. 代码分析

在 Abp.AspNetCore 库中,基本上都是针对 ASP.NET Core 的一些相关组件进行替换。大体上有过滤器、控制器、多语言、动态 API、CSRF 防御组件这几大块东西,下面我们先按照 AddAbp() 方法与 UseAbp() 方法内部注入的顺序依次进行讲解。

首先我们讲解一下 AddAbp() 方法与 

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信