これは上で、シリーズの2番目の新しいASP.NETコアコアオブジェクトである ウェブホストの準備フェーズ我々はWebHostBuilderの初期化と設定について話しました。私たちは、WebHostBuilderに次のような構成を作ります
- UseKestrelケストレルはHttpServerをに設定しました
- ConfigureAppConfigurationは、コンフィギュレーションファイルを設定しました
- 、ログプロセッサを構成する二つの方法デバッグおよびコンソールを追加ConfigureLogging
- UseStartup指定された起動クラス
あなたはWebHostBuilderを持っていたら、私たちはウェブホストを構築するために、ビルドメソッドを呼び出すことができます。
私たちは、最初のコード方式ビルドで見ることができます
// 初始化DI
var hostingServices = BuildCommonServices(out var hostingStartupErrors);
var applicationServices = hostingServices.Clone();
var hostingServiceProvider = hostingServices.BuildServiceProvider();
// 构造 WebHost
var host = new WebHost(
applicationServices,
hostingServiceProvider,
_options,
_config,
hostingStartupErrors);
// 初始化host
host.Initialize();
return host;
BuildCommonServices
これは、第一の方法WebHostBuild実行する方法であって、主に新しいServiceCollectionと、次の基本的な実施例の登録番号の完了です。
- IApplicationBuilderFactory
- IHttpContextFactory
- IMiddlewareFactory
- IStartupFilter
- IServiceProviderFactory <IServiceCollection>
- スタートアップ
実際には、IStartupはDI、2つの方法の使用に登録されました。我々はStartup.csでWebHostBuilderに指定された場合は、直接IStartupにバインドされたIStartupインタフェースから継承されました。
if (typeof(IStartup).GetTypeInfo()
.IsAssignableFrom(startupType.GetTypeInfo()))
{
services.AddSingleton(typeof(IStartup), startupType);
}
それ以外の場合は、スタートアップを構築するために命名規則に従う必要があります。
services.AddSingleton(typeof(IStartup), sp =>
{
var hostingEnvironment =
sp.GetRequiredService<IHostingEnvironment>();
var methods = StartupLoader.LoadMethods(
sp,
startupType,
hostingEnvironment.EnvironmentName);
return new ConventionBasedStartup(methods);
});
ホストの初期化
それは全体のHttpパイプラインの建設を完了したので、ホストの初期化は、我々がフォーカスについて話す時間です。
if (_application == null)
{
_application = BuildApplication();
}
RequestDelegateあるこの_application。引数がのHttpContextです。
public delegate Task RequestDelegate(HttpContext context);
さんが戻って7つのステップ、5つのステップがあり、IAapplicationBuilderを総括BuildApplicationのアプローチを見てみましょう私たちは、このRequestDeleagetの上に話すStartup.csを構築する方法を設定し使用して構築されます。
IApplicationBuilder
IApplicationBuilderがHttpAbstractionsで定義されたこのプロジェクトは、HttpAbstractions ASP.NETコアは、それはまた、全体のプロセスを処理HTTPについてASP.NETコアたくさんの振る舞いを定義するASP.NETコアの重要な一部であり、Githab上のサブプロジェクトです。でもIApplicationBuilder場合。
これは主に、いくつかの重要な属性が含まれています。
私たちはこのIApplicationBuilderで与えられ、そしてこの方法はミドルウェアを追加するために使用されるStartup.csパラメータで見る方法を設定します。
public void Configure(IApplicationBuilder app) {
// 相当于 List<Middleware>().add(某个middleware)
app.Use(某个Middleware)
}
WebHost.Start
私たちのウェブホストの初期化が完了したら、ポートモニタIServerを開始し、HTTPリクエストの処理を開始するためにStartメソッドと呼ばれます。これは、ウェブホストの第3段階である:プロセスを開始します。私たちは、次木曜日の午前20時に説明します。
1 条评论
Allen · 2018年2月27日 下午2:59
能不能再加几个图呢?比如顺序流程图,帮助新手理解,文章讲的很好,总结的也很棒,感谢