Scorpio 引导程序
本文介绍了 Scorpio 引导程序 (Bootstrapper) 并提供有关使用方法的指南。
什么是 Scorpio 引导程序?
Bootstrapper 类主要用于启动应用程序,发现并装载 ScorpioModule 类及其依赖链,完成应用启动前的初始化操作,以及应用程序的生命周期管理。
Bootstrapper 类由 BootStrapper.Create 方法创建或依赖于 Asp.Net Core 的通用主机构造器。如:
using System;
using System.Security.Principal;
using Microsoft.Extensions.DependencyInjection;
namespace Scorpio.Sample.Console
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var bootstrapper = Bootstrapper.Create<StartupModule>())
            {
                bootstrapper.Initialize();
            }
        }
    }
}
或者:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Scorpio.Sample.AspnetCore
{
    public class Program
    {
        public static void Main(string[] args) => CreateHostBuilder(args).Build().Run();
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args).AddScorpio<StartupModule>()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}
引导程序创建选项
您可以使用 Bootstrapper.Create<StartupModule>(Action<BootstrapperCreationOptions> optionsAction) 或 IHostBuilder.AddScorpio<StartupModule>(Action<BootstrapperCreationOptions> optionsAction) 重载以便在创建 Bootstrapper 的时候提供更多的选项。BootstrapperCreationOptions 提供的服务如下:
- 
    PreConfigureServices(Action<ConfigureServicesContext> configureDelegate)用于在Module之外提供配置服务的预处理操作。 
- 
    ConfigureServices(Action<ConfigureServicesContext> configureDelegate)用于在Module之外提供配置服务操作。 
- 
    PostConfigureServices(Action<ConfigureServicesContext> configureDelegate)用于在Module之外提供配置服务的后处理操作。 
- 
    Configuration(Action<IConfigurationBuilder> action)用于为应用程序添加应用配置。 
以上操作可以多次添加,引导程序将在处理所有 Module 模块的对应方法之后依照添加的顺序依次执行。
- 
    UseServiceProviderFactory<TContainerBuilder>(IServiceProviderFactory<TContainerBuilder> factory)用于替换应用的默认容器提供程序。