|
|
1.22. 为什么有跨平台二进制?
.NET Compact Framework 和执行引擎是完整的 .NET Framework 和 CLR 的一个兼容子集实现。当不存在强名称绑定策略时,针对 .NET Compact Framework 编译的应用程序将会绑定和运行在整个 .NET Framework 上,但有一些重要的例外:
• .NET Compact Framework 程序集由不同的强名称密钥对进行签名,这样 CLR 可以将它们与其全部 .NET 副本区分开来。
• 将来发布的完整的 .NET Framework 和 CLR 将包括绑定策略,它可以将完整的 .NET Framework 程序集替换为兼容 .NET Compact Framework 引用。然后在一些常见的情况中,它可以重复使用现有的组件而不需要重新链接。例如,如果您的组件只引用 .NET Compact Framework System 和 System.NET 类,则它可以在 .NET Compact Framework 和整个 .NET Framework 上很好地运行而不需要重新链接。
• 如果您的引用功能与 .NET Compact Framework 不同,例如基于 Windows Mobile 的 Pocket PC 特定的 UI 控件,则您的程序将会在与整个 .NET Framework 绑定时失败。
• 就像跨平台二进制兼容性简化了中间件组件的开发和部署一样,Microsoft 相信胖客户端应用程序应该利用特定于设备的功能来提高用户体验。这意味着最好的 GUI 代码可能是特定于目标的。
• 虽然 Microsoft 已经做出了很大的努力,将特定于设备的功能分解为离散的命名空间和程序集以避免绑定冲突,但可能存在版本 1 无法处理的不兼容分解的情况。在这些情况下,在整个 .NET Framework 中滥用特定于设备的功能将会引发运行时异常而非应用程序加载异常。 |
|