ASP.NET Core 2.0 中的 WebHost(實現 IWebHost 的基類)是用於爲進程提供 HTTP 服務器功能的基礎結構項目,例如,若是正在實現 MVC Web 應用或 Web API 服務。 它提供 ASP.NET Core 中全部新的基礎結構優勢,使用戶可以使用依賴關係注入,在請求管道中插入中間件等,並精確地將這些 IHostedServices 用於後臺任務。web
.NET Core 2.1 中引入了 Host(實現 IHost 的基類)。 它能讓用戶擁有與 WebHost類似的基礎結構,使用它咱們能夠獲取和Asp.net core同樣的框架功能(依賴項注入、日誌、配置、託管服務等),若是咱們編寫一個服務的時候,它提供了一個很是好用的框架。一個基本的示例代碼以下: json
public static async Task Main(string[] args) { var host = new HostBuilder().Build(); await host.RunAsync(); }
主要有以下兩個步驟api
前面的代碼只有一個空環境,要實現依賴項注入、日誌、配置、託管服務等功能,還須要進一步的配置,本文的這裏就簡單的介紹一下通用主機的配置方法。服務器
系統配置 app
系統配置有兩個函數ConfigureHostConfiguration和ConfigureAppConfiguration 框架
hostBuilder.ConfigureHostConfiguration(configHost => { configHost.SetBasePath(Directory.GetCurrentDirectory()); configHost.AddJsonFile("hostsettings.json", optional: true); configHost.AddEnvironmentVariables(prefix: "PREFIX_"); configHost.AddCommandLine(args); });
這兩個函數使用比較相似,它們的關係是主機配置用於初始化 IHostingEnvironment,以供在應用的構建過程當中使用。async
依賴關係注入 ide
通用主機集成了DI框架,若是要使用DI框架,則須要調用ConfigureServices函數極限依賴關係注入: 函數
hostBuilder.ConfigureServices((context, services) => { services.AddScoped<MyService>(); });
配置日誌 ui
咱們能夠經過在ConfigureServices中經過DI框架配置日誌系統,但HostBuilder單獨提供了一個配置日誌的接口ConfigureLogging:
hostBuilder.ConfigureLogging((hostContext, configLogging) =>
{
configLogging.AddConsole();
configLogging.AddDebug();
});
它內部實際上依然是經過DI框架配置的日誌系統。
通用配置
除了經過new一個HostBuilder外,系統還提供了一個建立HostBuilder的方法。
Host.CreateDefaultBuilder()
它的內部也是調用HostBuilder的,但他提供了通常經常使用的選項,具體包括:
也就是說,它基本上提供了咱們所經常使用的大部分功能,而且它返回的也是一個HostBuilder,咱們還能夠在它的基礎上接着配置,實現咱們系統中的特有功能