首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在IIS之外的宿主被称为自身宿主?

为什么在IIS之外的宿主被称为自身宿主?
EN

Stack Overflow用户
提问于 2021-09-03 04:59:43
回答 1查看 94关注 0票数 3

一般来说,如果第三个服务提供商为我管理web服务器,则它是托管的,而如果我自己管理web服务器,则它是自托管的。

在IIS中,在这两个地方,我是一个在服务器上发布代码的人,在ASP.NET的时候这不叫自托管吗?“自我”到底是什么意思?

对于我这样的程序员来说,自托管意味着应用程序应该能够托管自己,这意味着它必须能够直接侦听web请求,或者它必须在自己的进程上运行。我说错了吗?请有人帮助我理解“自我”在自我托管的意义。

此外,微软用来解释自我托管的图像让我非常困惑,据我所知,IIS使用w3wp.exe来执行应用程序,如下所示:

上面的图像很好,w3wp是我们的应用程序执行的进程,而IIS是整个容器。

但现在,看看这张图片:

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

对我来说,它应该是

为什么我的镜像与Microsoft的自托管镜像不同?我在哪里错过了这个概念?

EN

回答 1

Stack Overflow用户

发布于 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服务器

下面的示例来自两个完全不同的应用程序。可执行文件(您可以使用二进制编辑器打开它)是相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69039725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档