模块化
为什么要模块化
如果世界使用 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方法的内容
}
}
Program.cs
var builder = Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseAutofac();
builder.Build().Run();
Startup.cs
// 清空模块原本配置
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 添加一个应用(模块)
services.AddApplication<MyProjectNameWebHostModule>();
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.InitializeApplication();
}
}