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)

    用于替换应用的默认容器提供程序。