CLR寄宿和AppDomain(一)
CLR(Common Language Runtime 公共语言运行时):提供的核心功能:内存管理、程序集加载、安全性、异常处理、线程同步。
寄宿(hosting)使任何应用程序都能利用CLR的功能,它让现有的一些程序至少能部分使用托管代码编写,还可以为程序提供通过编译来进行自定义和扩展的能力。其中允许扩展性,意味第三方DLL可能会在程序中运行,DLL可能企图利用程序的安全上下文来访问它本来无权限访问的资源。
CLR的AppDomain解决了这个问题。AppDomain允许第三方代码在现有的进程中运行,同时CLR保证数据结构、代码和安全上下文不被滥用或破坏。
CLR寄宿
Microsoft为CLR定义了一个COM接口,为其和服务器分配了GUID(Globally Unique Identifier),可以参考MetaHost.h头文件,该文件定义了GUID和非托管ICLRMetaHost接口。
任何Windows应用程序都能寄宿CLR,但是不能通过CoCreateInstance来创建COM服务器的实例,非托管宿主应该调用MetaHost.h中生命的CLRCreateInstance函数。
CLRCreateInstance这个函数在MSCorEE.dll中实现,这个DLL被我们称为“