一般来说,如果第三个服务提供商为我管理web服务器,则它是托管的,而如果我自己管理web服务器,则它是自托管的。
在IIS中,在这两个地方,我是一个在服务器上发布代码的人,在ASP.NET的时候这不叫自托管吗?“自我”到底是什么意思?
对于我这样的程序员来说,自托管意味着应用程序应该能够托管自己,这意味着它必须能够直接侦听web请求,或者它必须在自己的进程上运行。我说错了吗?请有人帮助我理解“自我”在自我托管的意义。
此外,微软用来解释自我托管的图像让我非常困惑,据我所知,IIS使用w3wp.exe来执行应用程序,如下所示:

上面的图像很好,w3wp是我们的应用程序执行的进程,而IIS是整个容器。
但现在,看看这张图片:

这里的应用程序是包装器,而Kestrel在应用程序中,而进程(dotnet.exe / application.exe)是包含Kestrel的包装器,为什么会这样呢?
对我来说,它应该是

为什么我的镜像与Microsoft的自托管镜像不同?我在哪里错过了这个概念?
发布于 2021-09-03 05:43:00
我认为你需要扩展这个概念:
Hosted本质上是通过运行服务器(web服务器)的第三方服务公开的应用程序(web应用程序)。
Self hosted与通过您管理的服务器公开的应用程序相同。
有时,正如Vineet正确地提到的那样,自托管代表具有公开应用程序本身的服务器进程的应用程序。就像Kestrel换Blazor一样。
IIS不是托管或自托管的判别式,只是概念的基础。
从我的角度来看,当我使用集成在Visual Studio调试中的IIS Express时,应用程序是自托管的,同时也是托管的。
从web服务器的角度来看,托管在IIS Express中,同时,从服务的角度来看,它是自托管的。
仅供参考: Blazor应用程序的编译器生成的applicationName.exe只是一个基于Kestrel的启动器。是启动applicationname.dll的web服务器
下面的示例来自两个完全不同的应用程序。可执行文件(您可以使用二进制编辑器打开它)是相同的。

https://stackoverflow.com/questions/69039725
复制相似问题