目录
正文
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() 方法与 
                        
                        
                    
