Silverlight应用程序结构

news/2024/7/10 5:23:31 标签: silverlight, deployment, application, 服务器, 扩展, 优化

 

在您使用托管的 API 创建基于 Silverlight 的应用程序时,生成过程将生成一个应用程序包。应用程序包是一个压缩 (zip) 文件,它具有 .xap 文件扩展名。此文件通常包含您的主要应用程序程序集和资源。它还包括内部版本生成的清单,该清单描述此应用程序并指定它在启动时需要的所有程序集。这些程序集可以在应用程序包内部或外部。

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

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

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

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

本主题介绍应用程序包结构。它还说明在应用程序包内部署文件的选项(所需但处于外部的部分或需要的文件)。

有关如何创建应用程序的信息,请参见如何创建新 Silverlight 项目。有关在网页内承载应用程序的信息,请参见将 Silverlight 与网页集成。

  应用程序包

一个应用程序包包含以下文件:

  • 一个 AppManifest.xaml 文件,它标识打包的程序集和应用程序入口点。

  • 一个应用程序程序集,它包括您的应用程序类。

  • 零个或多个库程序集。

  • 零个或多个松散资源文件,例如图像文件或视频文件。

该 AppManifest.xaml 文件通常由生成过程生成,并且使用 XAML 标记来为您的应用程序声明 Deployment 对象。

在 AppManifest.xaml 文件中,Deployment 元素包括以下属性:

  • 一个 RuntimeVersion 属性,用于标识所需的 Silverlight 版本。

  • EntryPointType 和 EntryPointAssembly 属性,用于标识应用程序入口点。

Deployment 元素还包括一个子 Deployment..::.Parts 属性元素,它为应用程序包中的每个程序集都具有一个子 AssemblyPart 元素。

如果您使用应用程序库缓存,Deployment 元素还可能包含一个子 Deployment..::.ExternalParts 属性元素。如果您添加了对于配置用于应用程序库缓存的库程序集的引用,则此元素存在。Deployment..::.ExternalParts 属性元素对于每个外部库包都具有一个子 ExtensionPart 元素。

该应用程序包必须包含一个 AppManifest.xaml 文件和一个入口点应用程序程序集。您可以将所有其他应用程序组件部署为"打包"文件、ExternalPart 文件或"按需"文件。

打包文件是在应用程序包中包括的文件。您通常包括应用程序在启动时所需的主要文件或者为避免启动后的延迟而必须可用的文件。还可以包括图像之类的共享资源,这些资源可嵌入在程序集中或作为应用程序包内的单独文件提供。

ExternalPart 文件是 zip 文件,其中包括应用程序启动时所需的一个或多个程序集。这些通常是库程序集,它们的更改机会小于主要应用程序文件。您可以通过在单独的下载中考虑这些因素来改进缓存效率。有关更多信息,请参见如何使用应用程序库缓存。

按需文件是在服务器上部署的文件,通常与应用程序包处于同一位置。您的应用程序可以在激活后检索这些文件。根据文件类型和大小,存在若干用于检索按需文件的选项。例如,您可以使用直接 URI 引用来检索图像文件,或者可以开始异步下载以检索库程序集或 zip 文件。有关更多信息,请参见下一节。

下图汇总了用于您的应用程序文件的应用程序包结构和部署选项。

Silverlight 应用程序结构

  打包、作为外部部分或按需部署文件

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

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

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

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

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

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

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

  请参见

参考

Application

Deployment

其他资源

部署和本地化

应用程序模型

应用程序服务

Silverlight 初始屏幕

资源文件

如何使用应用程序库缓存

如何按需加载程序集

按需下载内容


http://www.niftyadmin.cn/n/1706207.html

相关文章

Silverlight如何使用应用程序库缓存

应用程序库缓存可在用户重新访问网站时帮助改善启动性能。 当您使用应用程序库缓存时,Silverlight 将某些程序集打包成应用程序包外部的外部部件(.xap 文件)。应用程序包中的清单指定启动时所需的程序集,并指示它们是在应用程序包…

Silverlight应用程序服务

当使用 Silverlight 的托管 API 创建应用程序时,必须创建一个从 Application 派生的类。Application 类提供应用程序通常要求的若干服务。它主要表示应用程序代码在 Silverlight 插件生命周期中的入口点。 Silverlight 插件生命周期自用户导航到承载 Silverlight 插…

listView优化问题

关于listView优化问题:阻止列表重复形状的加载,即选项样式的重复加载。加载一次即可,缓存到convertView其中notes为listView列表集合,note为列表中一个选项对象,有noteInfo、noteTime、isCheck三个属性,not…

全国计算机a类高等学校,全国高校A类专业概览,谁强谁弱一目了然

2020年高校A类专业统计可以看到,在榜单上浙江大学超过清北复交夺得榜首,A类专业最多,达到了39个!然后是北京双子星清华北大和上海双子星复旦交大。不过综合实力浙江肯定是比不上清华大学和北京大学,因为清华大学和北京…

Silverlight如何按需加载程序集

下面的示例代码演示如何从主机服务器按需检索程序集,然后将其加载到当前应用程序域中。 此示例使用 WebClient 类启动程序集的异步下载以响应用户鼠标单击。当下载完成后,将使用 AssemblyPart 类来加载此程序集。 此示例假定您已在您的应用程序项目中添…

VC++ MFC DLL模板

1、VS2003新建DLL项目dllTest 2、项目dllTest中添加类CDllDailog 3、切换到Resource view界面,添加新Button(ID:IDC_BUTTON_Hello Caption:Hello),并点击进入DllDialog.cpp脚本,添加代码如下(红色): 1 #include "…

Silverlight应用程序扩展服务

使用应用程序扩展服务可以扩展 Silverlight 应用程序模型。通常使用扩展服务来封装特定功能域中由多个应用程序使用的功能。例如,可以使用扩展服务来实现专用媒体处理或自定义数据访问层。 Application 类提供多数应用程序共用的服务。有关更多信息,请参…

新疆计算机考试ppt教程,2014新疆维吾尔自治区计算机等级考试二级考试答题技巧...

2014新疆维吾尔自治区计算机等级考试二级考试答题技巧1、在内存中,每个基本单位都被赋予一个唯一的序号,这个序号称为( C )A、字节 B、编号 C、地址 D、容量2、我国颁布汉字编码标准GB 2313-1980,是规定了汉字的( B )A、内部码 B、交换码 C、…