在ASP.NET Core中,Host是一個託管應用程式的宿主環境。它提供了一種統一的方式來啟動和執行應用程式,無論是在開發環境中還是在生產環境中。Host負責處理應用程式的生命週期、設定和依賴項管理等任務,使開發人員能夠專注於應用程式的業務邏輯。
Host是通過使用IHostBuilder介面和Host.CreateDefaultBuilder方法來建立的。IHostBuilder介面允許我們設定和構建Host,而Host.CreateDefaultBuilder方法提供了一組預設的設定選項,使得建立Host變得更加簡單。
使用Host非常簡單。下面是一個基本的範例:
using Microsoft.Extensions.Hosting;
using System;
class Program
{
static void Main(string[] args)
{
var host = Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
// 設定和註冊依賴項
services.AddMyServices();
})
.Build();
// 執行應用程式
host.Run();
}
}
在上面的範例中,我們使用Host.CreateDefaultBuilder方法建立了一個Host,並通過ConfigureServices方法設定和註冊了一些依賴項。最後,我們通過呼叫Build方法來構建Host,並通過呼叫Run方法來執行應用程式。
除了上面的基本用法之外,Host還提供了許多其他的設定選項和擴充套件點,以滿足不同的需求。我們可以通過呼叫ConfigureHostConfiguration方法來設定Host的設定,通過呼叫ConfigureAppConfiguration方法來設定應用程式的設定,通過呼叫ConfigureServices方法來設定依賴項,以及通過呼叫ConfigureLogging方法來設定紀錄檔記錄等。
Web Host是ASP.NET Core 2.x版本及之前的主機模型。它主要用於託管Web應用程式,提供了一些特定於Web開發的功能。Web Host繼承自Generic Host,並新增了一些與Web開發相關的預設設定和中介軟體。
Web Host提供以下功能:
Generic Host是從ASP.NET Core 3.0版本引入的新主機模型。它是一個通用的、可延伸的主機,可以用於託管各種型別的應用程式,不僅限於Web應用程式。Generic Host提供了更多的靈活性和可延伸性,使開發者能夠構建更加通用的應用程式。
Generic Host提供以下功能:
Web Host是從Generic Host派生而來,專注於Web應用程式的託管,提供了與Web開發相關的預設設定和中介軟體。
Generic Host是一個通用的主機模型,適用於各種型別的應用程式,提供了更多的靈活性和可延伸性。
在ASP.NET Core 3.0及之後的版本中,建議使用Generic Host來構建新的應用程式,因為它提供了更多的功能和擴充套件性。
Web Host適用於傳統的Web應用程式開發,提供了與Web開發相關的預設設定和中介軟體。Generic Host是一個通用的主機模型,適用於各種型別的應用程式,並提供了更多的靈活性和可延伸性。根據應用程式的需求,選擇適合的主機模型來構建和託管應用程式。
從asp.net coe6開始,預設的asp.net core模板已經改成使用WebApplication來建立Web應用程式。WebApplication提供了一種簡化的方式來設定和執行 Web 應用程式,而不需要 Startup 類。
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
app.Run();
在上面的範例中,我們使用WebApplication.CreateBuilder方法建立了一個WebApplication範例。
然後,通過builder.Services設定我們依賴注入。
最後,我們通過呼叫Build方法來構建WebApplication範例,並通過呼叫Run方法來執行應用程式。
WebApplication提供了許多其他的方法和擴充套件點,用於處理不同型別的請求、設定中介軟體、設定路由規則等。通過使用這些方法和擴充套件點,我們可以構建出複雜和強大的Web應用程式。
除了處理HTTP請求和生成HTTP響應之外,WebApplication還提供了一些其他的功能,例如依賴項注入、設定管理、紀錄檔記錄等。我們可以通過呼叫Services屬性來存取依賴項注入容器,通過呼叫Configuration屬性來存取設定資訊,通過呼叫Logging屬性來存取紀錄檔記錄功能。
通過使用WebApplication,我們可以構建出強大和靈活的Web應用程式。
ASP.NET Core中的Host是一個重要的概念,它提供了一種可靠和靈活的方式來啟動、設定和管理應用程式。Host負責處理應用程式的生命週期、設定和依賴項管理等任務,使開發人員能夠專注於應用程式的業務邏輯。通過Host,我們可以實現各種不同型別的應用程式,例如Web應用程式、後臺任務和控制檯應用程式。希望本文對你理解和使用ASP.NET Core中的Host有所幫助。
歡迎進群催更。