【问题标题】:How to run asp.net core application is work with all web server? Is that reason Kestrel?如何在所有 Web 服务器上运行 asp.net 核心应用程序?这就是红隼的原因吗?
【发布时间】:2019-06-16 22:17:38
【问题描述】:

其实我不明白。 asp.net核心应用如何跨平台? 这就是红隼的原因吗?我认为网络服务器接受请求并发送到 Kestrel bla bla。为什么他们需要 Kestrel?

【问题讨论】:

标签: asp.net-core


【解决方案1】:

asp.net核心应用如何跨平台?

应用程序需要运行时是很常见的。 Java、JS、Python……你总是需要目标系统上的一些东西来让你的应用程序工作。对于 asp.net 核心,它是 asp.net 核心运行时,并且此运行时可用于许多平台。这就是为什么您可以在所有这些平台上运行您的应用程序的原因。请参阅https://dotnet.microsoft.com/download/dotnet-core/2.2 了解可用的软件包。

这是红隼的原因吗?

Kestrel 是 Web 服务器部分。 (如果您编写命令行应用程序,则不需要红隼)。您可以将其与例如Java 中的 Tomcat。

我认为网络服务器接受请求并发送到 Kestrel bla bla。

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

常见(但只是一个示例)设置:

  • 代理(Web)服务器:终止 TLS,将负载平衡到多个后端 Web 服务器。
  • 后端(Web)服务器:运行应用程序。但重点放在这部分。无需配置 TLS 证书,易于扩展,...

为什么他们需要 Kestrel?

同样,有些语言/框架使用现有服务器的模块(例如 PHP),而另一些语言/框架使用单独的服务器(Java、JS、C#、...)。对于 c#,它是 kestrel 网络主机。

【讨论】:

  • Java, JS, Python, ... fwiw: 那是语言而不是运行时 :P 运行时是 JVM、NodeJS(用于服务器端 js 和基于 Googles V8 的应用程序)、CLR/ CoreCLR 等
  • 最重要的是,Kestrel 现在可以用于自托管(在 1.x 版本中不推荐),但是当多个应用程序与 Kestrel 一起运行时,您不能共享相同的端口.因此,Web 服务器接收请求并将其重定向到后面的应用程序(或 docker,如果适用)... 反向代理
  • @Tseng - 是的,它不是运行时列表,而是需要运行时的语言列表。还有其他一些你通常不需要运行时的地方——(假设我们将“运行时”定义为通常不属于操作系统的东西)。
猜你喜欢
  • 2022-01-11
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多