什麼是 Kestrel 以及它與 IIS 的區別?(ASP.NET)


Kestrel 是一個輕量級、跨平臺且開源的 ASP.NET Core Web 伺服器。它包含在 ASP.NET Core 中,並預設啟用。Kestrel 支援 .NET Core 支援的所有平臺和版本。

在 Program 類中,ConfigureWebHostDefaults() 方法將 Kestrel 配置為 ASP.NET Core 應用程式的 Web 伺服器。

public class Program{
   public static void Main(string[] args){
      CreateHostBuilder(args).Build().Run();
   }

   public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
         .ConfigureWebHostDefaults(webBuilder =>{
            webBuilder.UseStartup<Startup>();
         });
}

儘管 Kestrel 可以獨立地為 ASP.NET Core 應用程式提供服務,但 Microsoft 建議將其與反向代理(如 Apache、IIS 或 Nginx)一起使用,以獲得更好的效能、安全性和可靠性。

IIS 和 Kestrel 之間的主要區別在於 Kestrel 是一個跨平臺伺服器。它可以在 Linux、Windows 和 Mac 上執行,而 IIS 則是 Windows 專用的。

這兩個伺服器之間的另一個重要區別是,**Kestrel 是完全開源的**,而**IIS 是閉源的**,並且僅由 Microsoft 開發和維護。

IIS 是一款古老但功能強大的軟體。使用 Kestrel,Microsoft 將跨平臺和高效能作為明確的設計目標。由於 Kestrel 程式碼庫是從頭開始的,因此開發人員可以忽略遺留/相容性問題,專注於速度和效率。

但是,Kestrel 沒有提供像 IIS、Nginx 或 Apache 這樣的完整 Web 伺服器的所有豐富功能。因此,我們通常將其用作應用程式伺服器,並使用上述伺服器之一充當反向代理。

更新於: 2021年6月22日

9K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.