CLR 全面透彻解析: 使用 CoreCLR 编写 Silverlight
2008-10-26 11:49:13 来源:WEB开发网虽然独立存储已经出现一段时间,但只有在 Silverlight 中使用后才引起人们的关注。适用于交互式 Web 应用程序的可配置安全文件系统,不仅可以开发文字处理程序等传统的 Office 应用程序,也可以开发维护大量数据的应用程序,如股票跟踪系统。
跨平台运行
Silverlight 可以在非 Windows 平台上运行。我们与 Novell 有合作,在 Mono 项目的 Moonlight 运行时的整个过程中都支持 Linux。Microsoft 还致力于研究适用于业界领先的 Symbian OS 和 Windows Mobile® 的 Silverlight 版本。Moonlight 可以在 Mono 上运行,而 Silverlight 的移动版本可以在 .NET Compact Framework(其内存占用量比 CoreCLR 低)上运行。但是,Silverlight 的 Mac OS X 版本只能在与 Windows 完全相同的 CoreCLR 上运行。
我们只有在平台适配层 (PAL) 的帮助下,才能达到此目标。此 PAL 是专为在不同平台上运行而编写的 API。它可为错误处理、文件处理、网络服务、线程语义等提供抽象层。PAL 中的功能可以共享 Win32® API 的名称,但实现过程却不同。某些 API 只可以通过 PAL 功能的参数传递到 OS X 功能中,而其他 API 需要使用自定义逻辑才能使 OS X 功能与 Windows API 签名相匹配。CoreCLR 使用的若干 Windows 功能 Mac 中并不具备,因此必须完全在 PAL 中实现(参见图 2)。
图 2 平台适配层
许多 Silverlight PAL 得益于开发 Shared Source Common Language Infrastructure (SSCLI)(也称为 Rotor)所获得的教训。SSCLI 可以在许多 UNIX 类型的平台和 Windows 上运行。基操作系统功能因各个 UNIX 类型平台差异很大。SSCLI PAL 必须同时在微内核(如 Mac OS X 中的 Mach 内核)和单内核上才能运行,并且需要处理线程、异常处理和网络堆栈等不同的操作系统服务。由于 Silverlight 仅适用于 Windows 和 Intel Mac 计算机,因此,我们能够为 PAL 中的许多功能编写特定的 Mac 实现,这对 PAL 的大小和性能很有帮助。
更多精彩
赞助商链接