什么是运行时主机(Runtime Host)?

8
什么是运行时宿主?
来自MSDN

公共语言运行时被设计成支持各种不同类型的应用程序,从Web服务器应用程序到传统的带有Windows用户界面的应用程序。每种类型的应用程序都需要一个运行时宿主来启动它。运行时宿主将运行时加载到进程中,在进程内创建应用程序域,并将用户代码加载到应用程序域中。

那么它是一个将运行时加载到另一个进程中的进程吗?
我该如何在任务管理器中检查它?
2个回答

9
不是的,它是一个将运行时DLL(例如mscoree.dll等)加载到其进程空间中的过程。因此只有1个进程空间。
所提到的运行时实际上是.net运行时或CLR。从传统操作系统的简化角度来看,CLR实际上只是一组DLL。因此,您需要一个OS进程来加载和执行该DLL的入口点。这个托管可执行文件就是您的运行时主机。实际上,.net运行时主机为CLR做了很多事情(请参见Hosting Overview
你提到了MSDN,所以我猜你已经在那里看过Runtime Hosts。您可以看到他们给出的示例都是托管CLR(DLL)的可执行文件。
希望这可以帮助你。

那么是操作系统加载程序生成主机进程吗? - Southsouth
1
是的,托管进程与其他进程一样启动。基本上,它成为 .Net 运行时主机的原因是它加载了 CLR。 - kervin

4
这篇文章可能会对你有所帮助:实现自定义运行时主机。它讨论了主机的各个方面以及何时/为什么您可能需要实现自己的主机。
直接摘自文章:
. NET Framework 提供的一些主机示例包括:
- ASP.NET:ASP.NET 附带的 ISAPI 过滤器负责启动 CLR 并初始化路由 Web 请求到 ASP.NET 进程所需的基础设施。 - Internet Explorer:.NET Framework 附带的 MIME 过滤器钩入 Internet Explorer 5.01 或更高版本以执行从 HTML 页面引用的托管代码控件。 - Shell 可执行文件:每次从 shell 启动可执行文件时,都会调用一小段非托管代码,将控制权转移到 CLR。
其他主机可能包括:
- 数据库引擎:Microsoft SQL Server 的未来版本将允许使用支持 .NET Framework 并使用 CLR 执行的语言编写存储过程。 - 个人组织者:几个电子邮件/日历/联系人程序允许用户编写脚本来自定义电子邮件消息、约会等的处理。很容易想象这些脚本在 CLR 上运行。CLR 提供的安全系统在此场景中尤其重要,因为电子邮件系统传播病毒的现象很常见。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接