【问题标题】:What is CLR hosting?什么是 CLR 托管?
【发布时间】:2011-01-21 20:04:24
【问题描述】:

什么是 CLR 托管?这样做的用例是什么?

【问题讨论】:

    标签: .net clr clr-hosting


    【解决方案1】:

    有关与 CLR v2(.NET 2.0、3.0 和 3.5)相关的 CLR 托管的信息,请参阅 here。有关 .NET 4.0 中较新的 CLR 托管 API 的信息,see here

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

    例如,SQL Server 2008 可以做到这一点。您可以编写存储在 SQL Server 数据库中并在 SQL Server 数据库引擎中运行的 .NET 代码。 SQL Server 正在托管 CLR 以实现这一目标。

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

    【讨论】:

    • +1 感谢您的回答。另外:当双击并启动 .NET 可执行文件时,谁托管 CLR?它是由 Windows 资源管理器托管的吗?
    • @Sabuncu:是的。这就是我在回答中提到的 Windows shell。
    • 谢谢。我看到了您的“Windows shell”参考,但不确定。在这种情况下,我认为您使用的是一般意义上的“shell”,而不是 DOS cmd.exe 或 PowerShell 控制台等 shell 程序。
    • 嗯,“Windows shell”是一个众所周知的短语,从开发的角度来指代 Windows 操作系统的用户界面组件。请在此处查看:msdn.microsoft.com/en-us/library/windows/desktop/… 这也是 .NET CLR 文档用于讨论托管替代方案的短语。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-22
        • 2013-10-28
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 2012-10-19
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        相关资源
        最近更新 更多