什么是 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 服务器的所有丰富功能。因此,我们通常将其用作应用程序服务器,并使用上述服务器之一充当反向代理。
广告