如何在所有的web服务器上运行asp.net core应用程序?是因为Kestrel的原因吗?

9 浏览
0 Comments

如何在所有的web服务器上运行asp.net core应用程序?是因为Kestrel的原因吗?

我其实不明白。ASP.NET Core应用程序如何实现跨平台?\n是因为Kestrel的存在吗?我认为Web服务器接收请求并将其发送给Kestrel,为什么还需要Kestrel呢?

0
0 Comments

如何在所有Web服务器上运行ASP.NET Core应用程序?原因是什么?是否是Kestrel?

ASP.NET Core应用程序如何跨平台?

- 不同的应用程序都需要运行时环境,无论是Java、JS、Python等,你都需要在目标系统上安装相应的环境才能使应用程序正常工作。对于ASP.NET Core来说,它需要ASP.NET Core运行时环境,而这个运行时环境可在许多平台上使用。这就是为什么你可以在所有这些平台上运行ASP.NET Core应用程序的原因。请参考https://dotnet.microsoft.com/download/dotnet-core/2.2获取可用的运行时环境包。

Kestrel是Web服务器的一部分,如果你编写的是命令行应用程序,则不需要使用Kestrel。你可以将其与Java中的Tomcat进行比较。

我认为Web服务器接收请求并将其发送给Kestrel。

在大多数情况下(除非是非常小的设置),我们总是有一个代理(Web)服务器来接收请求并将其转发给另一个Web服务器。虽然它们看起来非常相似,但它们的角色不同。

常见的(仅作为示例)设置:

- 代理(Web)服务器:终止TLS,负载均衡到多个后端Web服务器。

- 后端(Web)服务器:运行应用程序,但重点是这一部分。无需配置TLS证书,易于扩展等。

为什么需要Kestrel?

- 与一些语言/框架使用现有服务器模块(例如PHP)不同,其他语言/框架则使用独立的服务器(Java、JS、C#等)。对于C#来说,它就是Kestrel Web主机。

- 此外,如今Kestrel也可以用于自托管(在1.x版本不推荐使用),但是当多个应用程序使用Kestrel运行时,它们不能共享相同的端口。因此,Web服务器接收请求并将其重定向到后端应用程序(或适用的Docker)...即反向代理。

ASP.NET Core应用程序可以通过安装ASP.NET Core运行时环境在各种平台上运行。Kestrel是ASP.NET Core应用程序的Web服务器组成部分,它类似于Java中的Tomcat。在大多数情况下,我们都会使用代理(Web)服务器来接收请求并将其转发给后端(Web)服务器。Kestrel还可以用于自托管,但多个应用程序不能共享相同的端口。因此,Web服务器充当反向代理,将请求重定向到后端应用程序。

0