Silverlight:应用程序模型

Silverlight 应用程序模型提供以下功能来供托管应用程序使用:

一个激活系统,它使得 Silverlight 插件能够下载您的应用程序在启动时需 要的应用程序包和任何外部库程序集。

Application 类,该类封装基于 Silverlight 的应用程序通常要求的服务, 例如生命周期事件通知和 Silverlight 插件的接口。

应用程序扩展性系统,此系统封装某些应用程序需要的其他服务,例如,自定 义的数据访问层。

资源管理系统,这包括 URI 引用和回退机制、按需资源加载、样式和模板共 享以及全球化支持。

通过这些功能,您可以实现在启动时间与资源可用性之间提供很好平衡的、构 造良好的应用程序结构。

例如,您可以实现一个应用程序,它提供对少量初始页面集合的立即访问,但 同时按需下载其他页面。或者,您可以提供大量的初始下载并且显示一个初始屏 幕以维护响应性。如果您提供大量的初始下载,则可以使用应用程序库缓存来减 少后续的下载次数。最后,您可以实现一个自定义导航系统来作为应用程序扩展 服务。

应用程序结构

Silverlight 激活系统使您能够指定要随您的应用程序提供的程序集和资源文 件。生成系统将指定的文件捆绑到一个应用程序包中,该包是具有 .xap 文件扩 展名的一个压缩的 zip 文件。

您可以使用应用程序库缓存来减少应用程序包的大小。在这种情况下,配置用 于缓存的程序集将压缩成单独的 zip 文件。这些程序集称为 ExternalPart 程序 集。

该应用程序包包括一个清单文件,该文件标识您的应用程序可使用的所有程序 集。这包括:

应用程序包中的程序集。

ExternalPart 程序集,这些是在启动时下载然后缓存的。

您在启动之后可能下载的程序集。

该应用程序包至少还必须包括此程序集以及您的应用程序类(Silverlight 插 件实例化这些类)。在您的应用程序启动时,它可以执行显示用户界面或检索附 加资源之类的任务。

您必须决定在应用程序包中要部署哪些程序集和资源文件(如 ExternalPart 程序集)以及在启动后要检索哪些程序集和资源文件。一个常见的工作流就是将 所有内容都放置于该应用程序包中,然后随着您的应用程序变大衡量下载和启动 时间。在延迟变得较长时,应考虑提供初始屏幕、使用应用程序库缓存并在启动 后检索某些文件。

应用程序服务

Application 类提供以下类别的服务:

应用程序 Startup 和 Exit 事件。

与 Silverlight 插件和宿主网页的交互。

资源管理。

集中化异常处理。

基于 Silverlight 的所有应用程序都必须包括从 Application 派生的单个类 。您的应用程序类通常将添加基于 XAML 的、应用程序范围的资源,并且处理 Startup 事件以提供某一用户界面。Silverlight 插件按照在宿主网页中配置的 方式在其客户端区域中显示该用户界面。

您可以使用 Startup 事件初始化应用程序及其用户界面。例如,您可以基于 Silverlight 插件配置参数、URL 参数或从独立存储检索的用户设置,指定初始 的应用程序状态。

还可以使用 Startup 事件开始附加程序集和资源文件的异步下载。 Application 类提供用于从程序集包或已下载的 zip 文件提取资源的帮助器方法 。

应用程序扩展服务

借助于 Application 类,您可以通过填充其 ApplicationLifetimeObjects 属性来添加更多服务。可以在应用程序 XAML 中或在应用程序构造函数中使用过 程代码来实现上述这一点。

ApplicationLifetimeObjects 属性是实现 IApplicationService 和 IApplicationLifetimeAware(可选)的对象列表。这两个接口提供对应用程序生 存期的多个阶段的访问。IApplicationService 使您能够初始化和清理您的服务 。IApplicationLifetimeAware 扩展 IApplicationService,并使您能够在各服 务之间以及在服务与应用程序代码之间实现更复杂的依赖项。

资源

Silverlight 支持以下类型的资源:

XAML 资源,例如可在多个用户界面元素之间共享的样式和模板。

资源文件,例如可按 URI 引用的图像和视频。您可以将资源文件嵌入在程序 集中,将它们单独包括在应用程序包中,或者从网络检索它们。

嵌入在程序集中或通过已本地化的附属程序集提供的资源字符串和其他值。

通常,短语"资源文件"可表示补充您的应用程序程序集的任何文件。这可以包 括包含其他类型的资源(例如本地化字符串或 XAML 文件)的数据文件或库程序 集。

您可以按 URI 引用某些资源文件,例如图像。它们可以是可从 Web 上的任何 地方检索文件的绝对 URI,也可以是相对 URI。Silverlight 对于相对 URI 使用 回退机制,因此,您无需更改代码即可更改部署某些文件的位置。

您可以通过使用异步下载过程,只从源站点检索某些文件类型,例如 zip 文 件和程序集。您可以使用 Application 类从 zip 文件提取资源,并且可以使用 AssemblyPart 类来加载程序集。

导航

Silverlight 提供若干选项在您的应用程序中进行导航,或者用于导航应用程 序外部的资源。

对于应用程序导航,您可以使用 Frame 和 Page 控件。此框架用作页面控件 的容器,有助于进行页面导航。每页都包含内容,您可以根据需要添加很多页面 来向用户表示内容。在任一时刻,框架只显示一个页面的内容。对于外部导航, 您可以在用户界面中提供普通的超链接,或者通过 HTML DOM 执行编程导航。

初始屏幕

Silverlight 提供初始屏幕支持,以便您可以自定义在托管应用程序的下载和 启动期间的默认体验。默认的初始屏幕在短暂的延迟后显示一个简单的旋转动画 。

如果您的应用程序包要求较长的下载和启动时间,则最好用显示下载进度的初 始屏幕替换默认的初始屏幕。您还可以使用初始屏幕描述您的应用程序或提供说 明、信用或免责声明。

Silverlight 初始屏幕是通过使用 JavaScript API 实现的。这使得 Silverlight 插件可以立即显示您的初始屏幕,甚至是在加载 Silverlight 托管 运行时之前。您可以通过在您的宿主网页中使用浏览器解释的 JavaScript,以编 程方式更改初始屏幕。

posted @ 2011-09-07 13:52  Areas  阅读(211)  评论(0编辑  收藏  举报