如果世界使用 Asp.NetCore 的Startup配置,会随着业务代码越来越多,需要在Startup.cs添加很多与业务有关的配置。模块化后,可以把与架构无关的配置项分散到各个模块下。
[DependsOn( typeof(AbpAspNetCoreMvcModule) // Host 需要依赖于这个 // 在这里添加需要使用的模块依赖,或者根据自己需要调整部分内容到新的模块,新模块也是一样的结构。 )] public class MyModule:AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { var services = context.Services; // 在这里配置原本写在ConfigureServices方法的内容 } public override void OnApplicationInitialization(ApplicationInitializationContext context) { var app = context.GetApplicationBuilder(); var env = context.GetEnvironment(); // 在这里配置原本写在Configure方法的内容 } }
var builder = Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .UseAutofac(); builder.Build().Run();
// 清空模块原本配置 public class Startup { public void ConfigureServices(IServiceCollection services) { // 添加一个应用(模块) services.AddApplication<MyProjectNameWebHostModule>(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { app.InitializeApplication(); } }