CLR 全面透彻解析: 使用 CoreCLR 编写 Silverlight
2008-10-26 11:49:13 来源:WEB开发网基类库
.NET Framework 在桌面上的演变发展是为了解决用户和服务器这两方面的问题。因此,基类库 (BCL) 中的很多功能在 Web 客户端上没有任何意义。例如,由于 Silverlight 不支持 CAS,因此大部分 System.Security 都不是必要的。诸如 System.Console 等许多其他类在 Web 中也没有任何意义(既然如此,为什么还要包含精简的 System.Console 类呢?因为它可以帮助我们测试产品)。
我们使用库与使用核心引擎的目标是一样的:将功能集减至最少,以便 .NET 开发人员无需全面了解全新技术即可成功使用。.NET Compact Framework 解决了不同情况中出现的同一问题,我们从中获得了一些灵感和指导。虽然我们从 Silverlight 中删除了 BCL,但保留了 .NET Compact Framework 和 Silverlight 间的兼容性。通过此方法在所有平台之间共享一个库,可以在最大程度上重复使用 .NET 技术。
您可以在 BCL 中的许多地方找到重复的功能。有些功能在 BCL 内部就是重复的,例如,泛型集合与非泛型集合。有时,有些功能已经存在于基操作系统中,如全球化支持。我们不仅不必支持 Silverlight BCL 中的所有替代选项,还可以通过省略此重复行为来提供最佳的性能和一致性。
由于 .Net Framework 2.0 版本中引入了对泛型集合的支持,所以我们主张人们将注意力转移到泛型上。在运行时的 1.x 版本中,通用数据结构必须基于对象,相同的核心数据结构类才能用来创建不同类型的集合。使用泛型类型参数,编译器可以通过扩展这些通用数据结构来提供类型安全性,从而使代码更易于编写和维护。此外,相对于非泛型集合来说,泛型集合对值类型执行操作效果更好,因为它不需要框起项目。总之,泛型不但可以提供非泛型集合提供的所有功能,而且由于不必使用重复,所以 Silverlight BCL 中可以不包含诸如 ArrayList 等非泛型集合。
更多精彩
赞助商链接