Windows Presentation Foundation XAML 浏览器应用程序概述

更新: 2008 年 7 月

XAML 浏览器应用程序 (XBAP) 结合了 Web 应用程序和胖客户端应用程序二者的功能。与 Web 应用程序类似,可以将 XBAP 发布到 Web 服务器,并且从 Internet Explorer 启动它。与胖客户端应用程序类似,XBAP 可以利用 WPF 的功能。开发 XBAP 也与胖客户端开发相似。本主题提供了对 XBAP 开发的简单而高级的介绍,并且重点介绍 XBAP 开发与标准胖客户端开发的不同之处。

本主题包括下列各节。

  • 实现 XAML 浏览器应用程序 (XBAP)
  • 部署 XAML 浏览器应用程序
  • XBAP 安全注意事项
  • XBAP 启动时间性能注意事项

实现 XAML 浏览器应用程序 (XBAP)

创建新的 XBAP 项目的最简单的方法是使用 Microsoft Visual Studio:

  1. 在“文件”菜单上指向“新建”,再单击“项目”。

  2. 在“新建项目”对话框的“项目类型”窗格中,选择“Visual Basic”或“Visual C#”。在“模板”窗格中,单击“WPF 浏览器应用程序”。

  3. 指定一个项目名称,然后单击“确定”以创建新项目。

WPF 浏览器应用程序项目模板将创建一个 XBAP 应用程序项目,该项目包括以下内容:

  • 一个应用程序定义,即 Application.xaml。

  • 一个页面,即 Page1.xaml。

可以根据需要对其进行扩充。

如果您想使用需要命令行编译的工具进行开发,请参见生成 WPF 应用程序 (WPF)

运行 XBAP 时,它将在浏览器窗口中启动,而不是在独立窗口中启动。当您从 Visual Studio 中调试 XBAP 时,该应用程序将使用 Internet 区域权限运行,因此如果超出这些权限的范围,将引发安全异常。有关更多信息,请参见生成 WPF 应用程序 (WPF)

部署 XAML 浏览器应用程序

当您生成 XBAP 时,Microsoft Build Engine (MSBuild) 至少会生成下列三个文件:

  • 可执行文件。该文件包含经过编译的代码,并具有 .exe 扩展名。

  • 应用程序清单。它包含与应用程序关联的元数据,并具有 .manifest 扩展名。

  • 部署清单。该文件包含 ClickOnce 用来部署应用程序的信息,并具有 .xbap 扩展名。

您可以将 XBAP 发布到 Web 服务器(Microsoft Internet 信息服务 (IIS) 或更高版本)上。您不需要在 Web 服务器上安装 .NET Framework,但您需要注册 WPF 多用途 Internet 邮件扩展 (MIME) 类型和文件扩展名。有关详细信息,请参见如何:配置 IIS 5.0 和 IIS 6.0 以部署 WPF 应用程序

为了准备好 XBAP 以便进行部署,请将 .exe 和关联的清单复制到 Web 服务器上。在网页上创建一个超链接以导航到该部署清单。当用户单击链接并导航到 .xbap 文件时,ClickOnce 将自动处理下载细节并启动应用程序。

清除缓存的 XBAP

在某些情况下,如果重新生成并启动 XBAP,您可能会发现启动了以前版本的 XBAP。这在某些时候有可能发生,例如,当您的 XBAP 程序集版本号是静态的,并且您从命令行启动 XBAP 的时候。在这种情况下,由于缓存的版本(以前启动的版本)和新版本的版本号相同,因此不会下载 XBAP 的新版本,而是加载缓存的版本。

在这些情况下,可以在命令提示符处使用 Mage 命令(该命令随 Windows SDK 一起安装)移除缓存的版本:

Mage.exe -cc

这样可以确保启动 XBAP 的最新版本,因为找不到缓存的版本。如果您通过按 F5 使用 Visual Studio 2005 进行调试,则会启动 XBAP 的最新版本。

一般来说,您应在每次生成时更新程序集版本号。

XBAP 安全注意事项

XBAP 必须在被限制到 Internet 区域权限集的部分信任的安全沙盒中执行。因此,您的实现必须支持 Internet 区域中所支持的 WPF 元素的子集(请参见 Windows Presentation Foundation 安全性)。

当在 Internet Explorer 浏览器进程中承载 WebBrowser ActiveX 控件 (WebOC) 时,适用以下安全性限制。

  • Internet Explorer 阻止来自 DHTML alert 函数的模式对话框和 HTML 中承载的 ActiveX 控件。Internet Explorer 禁止显示源自活动选项卡线程以外的线程的对话框。

  • 当在 HTML 页中跨域加载 XBAP 时,承载 WebOC 控件会引发异常。

XBAP 启动时间性能注意事项

衡量 XBAP 性能的一个重要方面是其启动时间。如果 XBAP 是要加载的第一个 WPF 应用程序,“冷启动”时间可能有十秒钟或更长时间。这是因为进度页是由 WPF 呈现的,而且必须冷启动 CLR 和 WPF 才能显示该页。

在 Visual Studio 2008 SP1 中启动时,通过在部署周期早期显示非托管进度页可以缩短 XBAP 的冷启动时间。应用程序启动后几乎可以立即显示进度页,因为它是由本机宿主代码显示并在 HTML 中呈现的。

此外,改进的 ClickOnce 下载序列并发最多可将启动时间缩短 10%。在 ClickOnce 下载和验证了清单后,即启动应用程序下载,并开始更新进度栏。

修订记录

日期

修订记录

原因

2008 年 7 月

添加了有关 XBAP 启动时间性能的一节。

SP1 功能更改。