应用程序的组成

2022-12-04 11:06 网友投稿
在您使用托管的 API 创建基于 Silverlight 的应用程序时,生成过程将生成一个应用程序包。 应用程序包是一个 zip 文件(使用 Deflate 算法压缩),它具有 .xap 文件扩展名。 此文件通常包含您的主要应用程序程序集和资源。 它还包括内部版本生成的清单,该清单描述此应用程序并指定它在启动时需要的所有程序集。 这些程序集可以在应用程序包内部或外部。以下是赢在威客网小编整理的应用程序的组成。

当您在某一网页中嵌入 Silverlight 插件时,指定该插件应下载的应用程序包。 该插件在该应用程序包中使用一个清单文件来标识要实例化的应用程序类。 此类称为您的应用程序的"入口点",并且它必须从 Application 类派生。

如果您使用应用程序库缓存,则清单还指示所需的哪些程序集是在应用程序包外部。 此插件将检索所有此类文件。 对于已本地化的应用程序,该插件还将为所有所需的内部和外部程序集检索特定于区域性的附属程序集。 有关更多信息,请参见 部署和本地化。

Application 类提供一个 Startup 事件,您可以处理该事件以便初始化您的应用程序及其用户界面。 Application 类还提供其他常用的应用程序服务。 例如,您可以使用它来从应用程序包或从下载的 zip 文件提取资源文件。 有关更多信息,请参见 应用程序服务。 您也可以添加自定义应用程序服务。


下载应用程序启动文件并实例化应用程序类的过程称作 Silverlight 激活系统。 通过该激活系统,您可以指定一个或多个包的最少初始下载以优化缓存。 在激活后,您的应用程序可按需检索附加的库程序集和资源文件。

您通常在决定下载和启动时间不可接受前在应用程序包内部署所有应用程序文件。 此决定取决于应用程序的要求。 例如,您可以在应用程序包内包括任意数目的文件,异步改进启动后的响应。 在此情况下,可以通过提供初始屏幕在初始下载期间维护响应。 有关更多信息,请参见 Silverlight 初始屏幕。

您可以使用应用程序库缓存来减少应用程序包的大小。 然而,这不会减少初始下载时间,它实际上会由于其他网络请求而导致下载时间增加。 应用程序库缓存的优势在于您可以更改应用程序代码,而不要求回返者下载未更改的库程序集。

在某些情况下,Silverlight 插件将无法加载非常大的应用程序包。 在您创建较大的应用程序时,应通过使用应用程序库缓存或按需检索某些文件,尽量降低应用程序包的大小。

在您决定将某些文件移出应用程序包时,有若干选项可供重新部署。

最容易重新部署的文件是使用相对 URI 引用的文件,例如图像文件或视频文件。 当 Silverlight 插件在代码或 XAML 中遇到相对 URI 时,它会首先在应用程序包中进行查找。 如果该插件在应用程序包中找不到相应文件,则会在主机服务器上进行查找。 这意味着,您无需要求代码更改就可以移动按相对 URI 引用的任何文件。 有关更多信息,请参见 资源文件。

许多文件类型不能按 URI 引用,并且在您将它们重新部署为按需文件时要求特殊处理。 例如,如果您重新部署某一库程序集,则必须添加按需检索它的代码,并且将其加载到应用程序域中。 有关更多信息,请参见 如何按需加载程序集。 在这种情况下,您仍必须在应用程序项目中引用该程序集,但应将"复制本地"值设置为"False"。 这可防止内部版本将该程序集添加到应用程序包或在启动时要求该程序集(例如,ExternalPart 程序集)。

您还可能要将若干相关资源文件移出您的应用程序包,但按需将它们检索为单个下载。 您可以通过将它们捆绑到在服务器上部署的某一 zip 文件中,执行上述操作。 然后,必须添加按需检索该 zip 文件并提取其内容的代码。 有关更多信息,请参见 按需下载内容。

声明:该内容系网友自行发布,所阐述观点不代表本网(威客牛)观点,如若侵权请联系威客牛删除。