什么是 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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告