Silverlight:应用程序和编程模型2011-09-05 MSDN 大多数基于 Silverlight 的应用程序以托管代码编写并充分利用 Silverlight 应用程序模型。但是,您可以选择使用简化的编程模型。Silverlight 为应用程序开发提供以下两个截然不同的模型:Silverlight 的托管 API,它使用在 Silverlight 的公共语言运行时 (CLR) 上运行的代码。可以将托管 API 用于已编译的语言(如 Visual Basic 和 C#) 或动态语言(如 IronPython 和 IronRuby)。Silverlight 的 JavaScript API,它使用由浏览器解释的 JavaScript 代码 。这些编程模型截然不同,因为您在 Silverlight 插件的单个实例中不能同时 使用它们。但是,您可以实现使用 JavaScript API 的初始屏幕,然后在加载您 的应用程序时过渡到托管 API。托管 API 提供比 JavaScript API 多很多的功能,在大多数 Silverlight 文 档中都会涉及它。使用托管 API 的应用程序可以访问 .NET Framework 的轻量级 版本,而 JavaScript API 只能访问 Silverlight 表示核心和浏览器 JavaScript 引擎。托管编程和应用程序模型托管 API 允许将托管程序集和资源文件打包为应用程序包 (.xap) 文件。 Silverlight 插件负责加载应用程序包并提取其内容。应用程序包必须包含一个程序集,该程序集具有从 Application 派生的类。 Application 类封装您的应用程序和 Silverlight 插件之间的交互。例如,它允 许您在宿主网页内显示用户界面。此外,它提供应用程序生存期事件和资源管理 。Silverlight 文档使用术语"应用程序模型"来指代由 Application 类封装的 应用程序包和公共功能。该应用程序模型帮助您开发简单应用程序以及可以共享 网络资源的复杂、可扩展应用程序。这些应用程序模型主题提供有关设计应用程序以支持几种常见情况(如根据需 要加载资源、下载进度指示和导航)的指导。托管 API可以使用 XAML 标记在托管 API 和 JavaScript API 中封装您的用户界 面 (UI) 设计。使用托管 API 时,可以将应用程序代码分布到多个 XAML 文件和 伴随的代码隐藏文件。当 Silverlight 插件加载 XAML 文件时,它创建 您的代码隐藏可以操作的对象树。您的托管应用程序代码也可以通过 HTML Bridge 操作 HTML 文档对象模型 (DOM)。JavaScript APIJavaScript API 是 Silverlight 版本 1.0 中可用的模型,为向后兼容 而保留,以支持一些特殊情况。在 JavaScript API 中,Silverlight 插 件加载单个 XAML 页而非应用程序包。此 XAML 可包括对服务器端资源(如图像 和视频)的 URI 引用。Silverlight 插件使用 XAML 创建一个对象树,您可以通 过在宿主 HTML 页中使用 JavaScript 以编程方式来操作该对象树。JavaScript API 不提供能支持具有内部导航功能的复杂应用程序的应用程序 模型。但是,它支持一些使用托管 API 不方便的情况,如初始屏幕。您还可以通 过将新的 XAML 页加载到 Silverlight 插件或将新的网页加载到浏览器来实现基 本导航功能。