CLR托管是什么?

33

什么是CLR托管?它的使用场景是什么?

3个回答

28

请参见此处,了解与CLR v2 (.NET 2.0、3.0和3.5)相关的CLR托管信息。关于.NET 4.0中更新的CLR Hosting API的信息,请参见此处

基本上,CLR充当一个库,可以由进程加载并“托管”。如果您愿意,您可以开发一个应用程序来加载和托管CLR;这将允许您的应用程序包含整个CLR虚拟机,在其中加载程序集并运行.NET管理代码。

例如,SQL Server 2008可以使用此功能。您可以编写存储在SQL Server数据库中并从SQL Server数据库引擎内部运行的.NET代码。为此,SQL Server正在托管CLR。

除Windows shell(通常的用户界面)之外的CLR主机可以为您的代码提供特定的上下文来运行。这对于专业应用程序或非常特定的场景非常有用。MSDN(上面的链接)提供了一些有关这些问题的指导方针。


1
+1 感谢您的回答。另外,当双击启动 .NET 可执行文件时,谁来托管 CLR?是由 Windows Explorer 托管吗? - Sabuncu
@Sabuncu:是的。那就是我在回答中提到的Windows shell。 - CesarGon
谢谢。我看到了你提到的“Windows shell”,但不确定。在这种情况下,我认为你是在使用“shell”的通用意义,而不是像DOS cmd.exe或PowerShell控制台这样的shell程序。 - Sabuncu
1
“Windows shell”是一个众所周知的短语,用于从开发角度指代Windows操作系统的用户界面组件。请参见此处:http://msdn.microsoft.com/en-us/library/windows/desktop/bb773177(v=vs.85).aspx 它也是.NET CLR文档中用于讨论托管替代方案的短语。 - CesarGon

12

CLR Hosting是在您选择的进程中托管.NET公共语言运行时。

使用情况包括现有环境不适合您的要求。一些现有环境是ASP.NET,WinForms,Windows Workflow Foundation等。如果这些不符合您的要求,您可以自己托管它。


2

CLR Hosting是一种使用.NET应用程序的托管服务。当您在本机进程内启动.NET运行时,该本机应用程序将成为运行时的主机。这使您可以向本机应用程序添加.NET功能。

如果运行时正在运行,但尚未加载任何用户代码,则某些内部线程调度程序和垃圾回收器肯定正在运行,因为它们是CLR运行时的一部分。与其他托管服务相比,它更加复杂。


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