Silverlight 中的 CoreCLR

Silverlight 2  包含一个 CLR,但并非其余 .NET 应用程序和程序集使用的 CLR. Silverlight CLR 也称为 CoreCLR,在设计时充分考虑了不一样用途。CoreCLR 专为跨平台互操做性而设计,可与 CLR 同时运行并支持不一样的安全模型以及不一样版本的基础类库。
CoreCLR 是 Silverlight 使用的虚拟机。它相似于为 .NET Framework 2.0 及更高版本提供强大功能的 CLR,也包含类似的类型加载和垃圾收集 (GC) 系统。
CoreCLR 采用很是简单的代码访问安全性 (CAS) 模型——它比桌面 CLR 更简单,Silverlight 只须要在应用程序级别强制实施安全策略。这是由于做为独立于平台的 Web 客户端,它不能依靠任何特殊的现行企业或机器策略,并且也不该该容许用户更改现有策略。但也有一些例外状况,好比 OpenFileDialog 和 IsolatedStorage(存储配额更改),在这种状况下,Silverlight 须要用户的明确赞成才能打破沙箱的默认规则集。OpenFileDialog 用于访问文件系统,而 IsolatedStorage 的做用是访问名义上隔离的存储并提升存储配额。
Silverlight 和 .NET 应用程序使用不一样 CLR 意味着您不能在两个针对 .NET 应用程序和 Silverlight 应用程序的项目中引用同一个程序集。主要问题出在 mscorlib 程序集上。Silverlight 正常使用所需的功能集很是小-仅仅是内核。但任何 .NET 程序集都要连接标准版本的 mscorlib,这就是问题所在。
MSDN杂志上有两篇文章详细的讨论了CoreCLR:
使用 CoreCLR 编写Silverlight: http://msdn.microsoft.com/magazine/cc721609
Silverlight 2 中的安全性: http://msdn.microsoft.com/magazine/cc765416