我已经成功地实现互操作beftween Win32应用程序和管理。净dll作为描述 在这里,.但我也读 在这里, 这是可能的主办的整个CLR内部的不受管理的过程。

所以我的问题是:为什么你会那样做?它是有点复杂得多,只是使用的对象-什么好处你获得对这一价格的增加的复杂性?

编辑:我的理解,从2第一个的回答,是的,你可以定制CLR为你的需要-这意味着,如果你正在写一个简单的商业应用程序,你永远不需要主人。托管系统重的东西,比如浏览器或SQL服务器。

有帮助吗?

解决方案

托管CLR一般是没有的东西你做到互操作之间的托管的代码和Win32.通常有3方法的互操作程序:

  • 运行时可调用的包装(项)-呼叫COM对象。净
  • COM可调用的包装(CCW)-做一个.净象的出现作为一个COM对象
  • P/调用

这些已支持,因为第一个版本。网。整点的托管CLR的是让你深深地嵌入。净码内部一个托管的应用程序。例如,有一个模块,可以主机。净在Apache on Win32让它运行。aspx页。

同样,SQL服务器想要的方式为人们写扩大存储的过程和功能与管理的代码。在过去的你可以写这些在C/C++,但是如果他们举办CLR他们可以实际上允许人们以写这些。该工作得到CLR进入一种状态是,它能够安全地嵌入式的真正推出的时间表,以及这样的事情像是控制记忆和安全出生。SQL服务器上有一些严重的稳定性要求和你不能有。净摇摆的船。

托管API显着改变。净额1.x2。x,但已更稳定的因为2.0CLR已经居住过。净3.0,3.5等。

其他提示

Microsoft SQL Server可以直接使用它来替换安全性,程序集加载,内存管理,线程管理等等。关于此主题的好书是“自定义Microsoft .NET Framework公共语言运行时”。

您可能拥有遗留应用程序,并且希望允许第三方在您的应用程序中使用.net的工具,尤其是以受控方式 ,例如 控制从哪里加载程序集。 此处就是一个例子。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top