首页 > 编程语言 >Silverlight应用程序服务

Silverlight应用程序服务

时间:2023-07-02 11:06:43浏览次数:49  
标签:Silverlight 服务 参见 .. 插件 应用程序 Application


 

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

Silverlight 插件生命周期自用户导航到承载 Silverlight 插件的网页时开始。如果用户已安装了 Silverlight,则 Web 浏览器激活此插件并开始下载应用程序包。

插件加载 Silverlight 核心服务,然后加载 Silverlight 公共语言运行时 (CLR),后者将为应用程序创建 AppDomain。当应用程序包下载完成时,CLR 实例化您的 Application 类并引发其 Startup 事件。

您可以向应用程序类构造函数中添加代码。然而,您通常将 Startup 事件处理程序用于大多数应用程序初始化任务,如显示用户界面页。

下图演示插件激活过程和此过程中各组件之间的关系。

有关 Silverlight 核心服务和 CLR 的更多信息,请参见 Silverlight 结构。有关 Silverlight 应用程序包的更多信息,请参见应用程序结构

基于 Silverlight 的应用程序中可能只有一个 Application 实例。启动后,Application 实例提供应用程序通常要求的若干服务。您可以通过从 static Application..::.Current 属性中检索 Application 实例,从应用程序中的任何代码访问这些服务。

本主题介绍 Application 类的以下功能。

  • 应用程序生存期管理。
  • 应用程序资源文件加载。
  • 未经处理的异常处理。
  • Web 宿主集成。
  • 扩展性。

  应用程序生存期管理

您可以在应用程序生存期的以下各点向运行的应用程序类添加代码:

  • 应用程序类构造函数。
  • 应用程序启动事件。
  • 应用程序退出事件。
应用程序类构造

您可以向应用程序类构造函数添加代码,以执行基本初始化任务,例如,初始化应用程序变量和附加事件处理程序。

大多数应用程序类是使用 XAML 标记和代码隐藏文件定义的。应用程序类的构造函数通常包括对于 InitializeComponent 方法的调用,该方法负责合并 XAML 和代码隐藏文件。构建过程将生成 InitializeComponent 方法实现,此实现通过调用 Application..::.LoadComponent 方法来加载 XAML。

应用程序 XAML 可以指定应用程序事件处理程序并使用属性和样式填充 Application..::.Resources 字典,以供整个应用程序使用。有关更多信息,请参见资源字典

应用程序启动

当 Silverlight 插件已完成加载应用程序包时,将发生 Application..::.Startup 事件。此时,所有包内程序集已加载到应用程序域中并可供使用。

可以使用 Startup 事件来执行常见的初始化任务,如下所示:

  • 处理在启动时检索的数据(如初始化和 URL 参数)或在前一个应用程序会话中存储的数据。
  • 显示应用程序用户界面 (UI)。
  • 开始异步下载其他资源文件或程序集。

以下各节简要介绍如何完成这些任务并提供指向更多信息的链接。

处理启动数据

若要检索在 Silverlight 插件配置中指定的初始化参数,请使用 StartupEventArgs..::.InitParams 属性。有关更多信息,请参见如何:指定和检索自定义初始化参数

若要从宿主网页检索 URL 参数,请使用 HtmlDocument..::.QueryString 属性。可以从 static HtmlPage..::.Document 属性检索 HtmlDocument 对象。但请注意,如果禁用了 HTML 访问,则无法使用 Document 属性。当网页承载来自不同域的基于 Silverlight 的应用程序时,这通常是这种情况。有关更多信息,请参见 HTML 桥中的安全设置

若要从前一个应用程序会话中检索数据,请使用 IsolatedStorageSettings 类。有关更多信息,请参见如何使用独立存储存储和检索应用程序设置

若要使启动数据可用于整个应用程序,则将其添加到 Application..::.Resources 字典。

显示用户界面

若要显示应用程序用户界面,请在 Startup 事件处理程序中设置 RootVisual 属性。

您只能设置此属性一次,通常是针对为用户界面提供布局根的 UserControl。可以通过更改可视化元素根的布局根在启动后更改用户界面。有关更多信息,请参见导航概述

说明:

Startup 事件可能在宿主网页完成布局计算之前发生。如果您将相对缩放用于 Silverlight 插件,则 Content..::.ActualHeightActualWidth 值在应用程序启动时没有意义。若要根据插件的当前大小缩放用户界面或执行布局,必须处理 Content..::.Resized 事件。有关更多信息,请参见调整 Silverlight 插件大小

检索其他资源

若要以异步方式下载其他资源文件或程序集,请使用 WebClient 类。

如果文件为 zip 文件,则可以使用 Application..::.GetResourceStream(StreamResourceInfo, Uri) 方法在下载后解压缩其内容。有关更多信息,请参见按需下载内容

如果文件为程序集,则可以通过创建一个新的 AssemblyPart 对象并调用其 Load 方法将程序集加载到应用程序的 AppDomain 中。有关更多信息,请参见如何按需加载程序集

应用程序退出

当发生以下操作之一时,将发生 Application..::.Exit 事件:

  • 用户关闭承载 Silverlight 插件的网页。
  • 用户刷新宿主网页。
  • 用户将浏览器导航出宿主网页。
  • 宿主网页使用 JavaScript 和 HTML DOM 从页中删除插件。
  • 用户注销或关闭操作系统。

Application..::.Exit 事件的一个常见用途是使用 IsolatedStorageSettings 类来保存应用程序设置。有关更多信息,请参见如何使用独立存储存储和检索应用程序设置

  应用程序资源文件加载

Silverlight 为从应用程序程序集、库程序集、应用程序包和主机服务器加载资源文件提供了广泛的支持。这种支持取决于您如何配置资源文件、您将它们部署在何处以及如何加载它们。有关更多信息,请参见资源文件应用程序结构

若要以编程方式访问原始资源文件,请使用 Application..::.GetResourceStream 方法。此方法提供重载,以使您能够从应用程序包或您按需检索的 zip 文件中解压缩资源文件。有关更多信息,请参见按需下载内容如何按需加载程序集

  未经处理的异常处理

在应用程序的生存期中,可能会发生意外情况,而导致 Silverlight 插件引发异常。尽管您可以在应用程序代码中捕获异常,但您可能无法预期所有潜在的异常。

未经处理的异常将导致 Silverlight 插件停止在浏览器中运行。为了防止发生这一情况,请处理 Application..::.UnhandledException 事件。可以用事件数据来确定异常是否可恢复。如果可以从异常中恢复,则将 ApplicationUnhandledExceptionEventArgs..::.Handled 属性设置为 true。

如果您不在托管代码中处理异常,则将发生 Silverlight 插件 onError 事件。这向您提供最后一个机会,供您通过在宿主网页中使用 JavaScript 来处理此异常。onError 事件提供对插件错误代码的访问,这对于进行调试可能很有用。有关更多信息,请参见调试、错误处理和异常。有关错误代码信息,请参见 Silverlight Plug-in Error Messages(Silverlight 插件错误消息)。

  宿主集成

托管代码直接与承载它的 Silverlight 插件交互有时很有用。例如,您可能希望检索初始插件配置值,或使用户能够在全屏模式下显示插件。

若要检索表示当前宿主插件的对象,请使用 Application..::.Host 属性。此属性范围 SilverlightHost 的一个实例,它提供与 Silverlight 插件对象参考中介绍的功能类似的功能。

  扩展性

借助于应用程序扩展服务,您可以通过填充其 ApplicationLifetimeObjects 属性将更多服务添加到 Application 实例。此扩展性机制优于使用 Application 类的框架特定的子类。借助于应用程序扩展服务,可以与应用程序生存期事件进行深入集成,并可以轻松地同时使用多个扩展。有关更多信息,请参见应用程序扩展服务

  请参见

参考

Application

其他资源

应用程序模型

应用程序结构

资源文件

资源字典

应用程序扩展服务

标签:Silverlight,服务,参见,..,插件,应用程序,Application
From: https://blog.51cto.com/u_16173572/6603675

相关文章

  • 如何创建新Silverlight项目
     Silverlight项目文件是您可以使用不同工具来创建和编辑的文本文件。例如,可以使用VisualStudio2008和ExpressionBlend来创建Silverlight项目或修改现有项目。有关更多信息,请参见ExpressionBlend文档。本主题介绍如何使用VisualStudio2008来创建和生成新的Silver......
  • 光脚丫学ASP.NET MVC(0001):创建ASP.NET MVC应用程序项目
    演示视频:http://u.115.com/file/cloa5hpg本演示介绍了如何使用VisualStudio2010创建ASP.NETMVC应用程序项目。下面是VS的新建项目对话框。其中红色线圈住的两个模板是VS2010安装时就自带的ASP.NETMVC2的项目模板,可以从官方网站下载最新的项目模板。下图是新建单元测试项目对话......
  • Docker 安装私人NuGet服务
    Docker安装 NuGet服务(使用baget)使用root用户操作1、拉取官方的最新版本的镜像dockerpullloicsharma/baget 2、创建主机挂载配置目录nuget目录存放文件,删除重启容器不会丢失mkdir-p/opt/dockerdata/nuget3、创建baget配置文件vi /opt/dockerdata/nuget/baget.env......
  • 【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(系统服
    调优意义系统运行缓慢,执行速度较差虽然没有对用户或公司造成实质性的损失,但它从侧面反映出系统在某些方面存在问题。可能需要对系统参数进行优化,或者对系统的设计和交互进行调整,这是后续系统性能优化的一个重要过程。我们将继续努力优化系统,以确保其高效运行和良好性能,以提升用户体......
  • DNS 域名解析服务
    DNS域名解析服务拓扑图:需求描述:➢主域名服务器地址为www.bdqn.com(192.168.100.50)、*.bdqn.com(192.168.100.60)➢从域名服务器地址为推荐步骤:主辅助挂载系统光盘系统光盘挂载到/mt目录安装修改检查主配置文件是否错误配置检查配置检查启动服务设置开机自动启动检查二、挂载系统光......
  • 【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(系统服
    @目录调优意义计划分析流程相关分析优化分析Nginx请求服务日志将请求热度最高的接口进行优化异步调用优化方式注意要点分析调用链路追踪体系建立切面操作分析性能和数据统计存储相关的调用以及耗时信息分析信息以及相关的耗时损耗日志系统的升级和优化异步日志处理机制异常问题和......
  • 在 Kubernetes(k8s) 上部署 Spring Boot 应用程序:应用程序使用环境变量中的错误端口属
    如果我使用此配置启动部署(即先启动服务,然后启动部署)则pod在启动期间会失败。在日志中,我可以找到以下消息:***************************APPLICATIONFAILEDTOSTART***************************Description:Bindingtotargetorg.springframework.boot.autoconfigu......
  • 服务器无损升级技术解析
    声明:本人原创文章,详细内容已发布在我的微信个人技术公众号---网络技术修炼,公众号总结普及网络基础知识,包括基础原理、网络方案、开发经验和问题定位案例等,欢迎关注。概述软件工程中持续迭代和更新是必不可少的,在服务端软件更新时,保持服务的连续性是一项关键任务。本文将从技术......
  • 微服务设计:分解单块系统
    限界上下文就是一个非常好的接缝,因为它的定义就是组织内高内聚和低耦合的边界。数据库是所有杂乱依赖的源头打破外键关系,把外键约束从数据库转移到代码中实现。这也就意味着,我们可能需要实现跨服务的一致性检查,或者周期性触发清理数据的任务。表结构分离后,对于原先的某个动作而......
  • [ GitLab ] GitLab CE 中各个参数对应的服务和功能,以及是否可以关闭
    https://www.cnblogs.com/yeungchie/ChatGPT说的。nginx:作为Web服务器和反向代理,用于访问GitLab的Web界面。可以关闭,但会导致无法通过Web界面访问GitLab。prometheus_monitoring:提供监控和报警功能,收集和分析GitLab的性能指标。可以关闭,不影响基本代码存放功能。registry:......