凯伦·科比
Windows Presentation Foundation
Microsoft Corporation
2005 年 10 月
适用于:
Microsoft .NET Framework 3.0 运行时组件 9 月 CTP (PDC 2005 内部版本)
总结:本文档探讨在 Web 上Windows Presentation Foundation的潜力。 此外,还讨论了 Web 浏览器应用程序背后的技术,以及如何迁移其现有站点。 它面向 Web 空间中有兴趣增强其基于浏览器的体验的人员。 ) (14 个打印页
目录
简介
WPF 网页版:Web 浏览器应用程序
在计算机上获取 .NET Framework 3.0
部署
Windows Presentation Foundation沙盒
松散 XAML
如何迁移现有站点
结论
其他资源
简介
构建新式 Web 应用程序具有挑战性。 随着所有联机选项的出现,引人入胜的 Web 体验的条形不断提升:视觉效果需要更加令人印象深刻。 功能需要更加复杂。 拥有吸引和留住客户的差异化体验比以往任何时候都更加重要。
创建此类 Web 应用程序的技术挑战十分重大。 一方面,你需要一种功能强大到足以支持视觉目标的技术,无论是 3D、复杂动画还是增强版式。 另一方面,同样的技术需要启用应用程序逻辑。 如果选择依赖于服务器的解决方案,则用户会遭受回发通信的延迟。 如果改用客户端实现,则面临以脚本语言进行开发的障碍。
很多时候,上述技术难题已在应用程序的桌面版本上得到解决。 但是,联机版本难以利用桌面解决方案,因为它们需要在 Web 技术中创作。
Windows Presentation Foundation (以前代号为“Avalon”) ,是 Microsoft .NET Framework 3.0 产品/服务的一部分,它为两种应用程序类型提供支持:独立应用程序和 Web 浏览器应用程序 (WBA) 。 Web 浏览器应用程序(发音为“wuba”)是在浏览器中运行且未安装的仅联机应用程序。 这些应用程序在安全沙盒中执行,并利用适用于 Web 的Windows Presentation Foundation平台的强大功能。
本文讨论了 WPF 在浏览器中的潜力、Web 浏览器应用程序背后的技术,以及如何迁移现有站点。 它面向 Web 空间中有兴趣增强其基于浏览器的体验的用户。
注意 如果对 WPF 安装的具有“类似 Web”部署的独立应用程序感兴趣,则应浏览 ClickOnce 部署。
WPF 网页版:Web 浏览器应用程序
(WBA 的 Web 浏览器应用程序) 为 Web 带来Windows Presentation Foundation的强大功能。 本部分重点介绍 WBA 必须提供的内容,并确定一些有利于 Web 浏览器应用程序的方案。
Web 浏览器应用程序提供哪些功能
作为Windows Presentation Foundation应用程序的一种风格,Web 浏览器应用程序提供了许多优势:
Xaml。 WPF 引入了名为“Extensible Application Markup Language”或 XAML 的新声明性编程模型。 由于它是基础平台 API 的直接反映,因此开发人员可以利用类型化编程系统的所有优势。 这包括编译期间的友好标记错误消息,以及提供 UI“挂钩”所需的代码的更多透明度。
<Application x:Class="MyApp" />
图 1. XAML 中定义的应用程序类
**数据绑定。 ** 数据绑定提供了一种灵活、声明性和可靠的方法,用于将数据引入 UI;它允许应用程序作者保持业务逻辑和 UI 的分离。 由于 WPF 控件支持将数据绑定到服务器上的信息,因此 Web 开发人员可以使用丰富的数据模板化系统以有效且有趣的方式异步使用其数据并将其可视化。
三维。 WPF 3D 系统已完全集成到平台中。 使用纯色绘制三维形状并不比使用视频或文本段落绘制相同的三维形状更难。
图 2. 浏览器中的三维
流文档。 与固定文档不同,流文档根据窗口大小、设备分辨率、用户首选项等动态布局内容。 这为用户提供了更优越、更个性化的阅读体验。
图 3. 相同的流文档,不同的窗口和字号
文本。 WPF 解锁了 OpenType 字体中丰富的版式功能, (TrueType 和 CFF) 。 这使用 ClearType 中的最新进展(包括子像素间距和 y 方向抗锯齿)提供更好的文本呈现。
图 4。 WPF 中的版式
动画。 WPF 动画系统提供了一种灵活的方法来指定场景中复杂的同步更改。 与属性和事件系统、数据绑定、样式设置和模板化完全集成,允许对丰富的交互式应用程序提供深度支持。
图 5。 3-D 中的 21 点卡动画
矢量图形。 WPF 对矢量图形的本机使用允许它以完全的视觉保真度运行 (在任何规模或分辨率下具有出色的抗锯齿) 。
图 6。 相同的矢量图形,不同的窗口大小
硬件加速。 如今的图形硬件越来越好。 WBA 可以利用 WPF 的硬件加速支持来创建新的视觉复杂性级别,同时使 CPU 可用以满足应用程序的计算要求。
安全沙盒。 WBA 在限制可执行的操作类型的安全沙盒中运行。 这意味着 WBA 可以执行诸如呈现 UI、与源服务器站点通信、写入和读取独立存储等操作。 但是,它们不能执行更危险的事情,如访问注册表、直接读取或写入文件系统等 (有关更多详细信息,请参阅本文档的沙盒部分) 。
无接触部署。 由于 Web 浏览器应用程序是沙盒中未安装的应用程序,因此它们不需要用户交互来启动:无需单击安全提示或信息栏消息。 他们只是运行。
.NET Framework编程语言。 WPF 基于.NET Framework构建。 因此,WBA 获得强类型托管应用程序的所有好处。 这包括使用.NET Framework编程语言 ( C#、Visual Basic 等) 、与 ASMX Web 服务的本机通信,以及访问适用于 .NET Framework 平台的许多工具。
适用于桌面/Web 的相同编程模型。 许多产品团队被迫创作其应用程序的两个独立版本:Web DHTML 版本和桌面 Win32 版本。 由于 WPF 同时支持联机和已安装的应用程序,因此桌面和 Web 应用程序可以共享基本代码。 若要将应用程序生成为 Web 浏览器应用程序,只需使用 Visual Studio 2003 中包含的模板或在项目文件中设置三个属性:
<HostInBrowser>True</HostInBrowser> <Install>False</Install>
注意 应用程序的 Web 版本还应禁用沙盒中不允许的任何功能。
Designer和开发人员拆分。 WPF 最小化 UI 和逻辑之间的协定,使开发人员和设计人员能够专注于他们最擅长的事情。 此外,通过封装功能强大的设计概念 (,如丰富的二维、动画和动态布局) ,并以高度可工具的标记格式公开它们,WPF 使设计人员能够直接表达其最佳和最具创意的想法,并成为独立的 UI 创建者。
Web 浏览器应用程序的应用程序方案
Web 浏览器应用程序为 Web 开发人员提供了许多优势。 作为 Windows 技术,它们还可以极大地增强 Windows XP、Server 2003 和 Vista 计算机上的客户体验。 但是,根据应用程序内容和客户到达目标,WBA 可能不是最适合你的技术。 在本部分中,我们将讨论 Web 浏览器应用程序大获全胜的方案。
建议使用 Web 浏览器应用程序的方案
WPF 可以提供许多开发和用户体验优势。 建议在以下情况下使用 Web 浏览器应用程序:
- 阅读和丰富内容可视化效果。 WPF 可以为由异步数据绑定三维、动画或文本驱动的基于内容的网站提供更好的体验。 还可以更轻松地生成视觉对象:可以在 XAML 中定义视觉对象,设计人员可以直接创作视觉对象,也可以使用 Expression Interactive Designer 等工具进行创建。 对于将内容存储为 XML 的网站,创建 XAML 和 HTML 的服务器端转换成本低,影响大。
- 在线游戏和建模。 在线游戏和科学建模等网站需要复杂的逻辑或计算引擎。 由于 WBA 使用托管代码来驱动应用程序,因此生成复杂的客户端逻辑会更加轻松。 而且,由于在独立存储中缓存信息的客户端上可能会发生繁重的工作,因此用户无需感受到 Web 回发的延迟。
- 数据流管理和生产力应用程序。 与游戏应用程序一样,数据流和工作效率 Web 应用程序也是逻辑驱动的。 此外,这些应用程序通常需要 Web 服务交互。 由于 WPF 是基于 .NET 构建的,因此可以使用提供的 ASMX Web 服务基础结构。 无需构建自己的机制来在应用程序和 Web 服务之间进行通信。
- 应用程序的两个版本:桌面版和 Web 版。 产品团队可以通过创建 WPF Web 浏览器应用程序和已安装的 WPF 应用程序来利用相同的代码库,而不是使用两种不同的应用程序技术。
- 公司应用程序。 在管理员控制托管环境的公司中,上述任何应用程序的部署都更简单。 这可能包括在所有客户端计算机上预安装 .NET Framework 3.0 或自定义 Intranet 应用程序的安全策略。
应考虑 Web 浏览器应用程序的方案
下面是 应考虑使用 Web 浏览器应用程序的一些方案。 根据视觉复杂性、开发便利性和客户覆盖范围的相对重要性,除了更广泛的 HTML 版本外,创建首选的 WBA 体验可能很有吸引力。
- 市场营销活动。 借助 WPF,Web 设计人员可以创建吸引潜在客户的沉浸式交互式市场营销活动。 在许多情况下,通过构建 WBA 为 Windows 用户创建更具吸引力的体验可能很有价值。
- 电子商务。 根据客户群,为.NET Framework 3.0 用户提供差异化体验可能对公司的品牌和业务有利。
在计算机上获取 .NET Framework 3.0
对于希望面向 .NET Framework 3.0 的开发人员来说,此新平台的无处不在是一个重要考虑因素。 我们计划通过多种方式解决 .NET Framework 3.0 的普及问题。
对于 Windows XP SP2 和 Server 2003,.NET Framework 3.0 将在 Windows 更新 下载。 我们目前正在探索如何使这些用户更容易发现此安装点。
对于 Windows Vista 的 PDC Beta 版本,默认情况下不会安装运行Windows Presentation Foundation应用程序所需的运行时组件。 但是,快捷方式提供了一个指针,用于从安装磁盘进行安装。 Windows Vista 的安装体验不是最终的,将来的 beta 版本可能会更改。
部署
向客户提供应用程序是任何应用程序平台故事的关键部分。 本部分更深入地探讨 Web 浏览器应用程序的部署方面,包括部署技术、浏览器托管和 WPF 检测。
ClickOnce
ClickOnce 是一种新的.NET Framework技术,可提供类似于 Web 的部署。 当用户单击链接时,应用程序文件将下载并安装在计算机上。 后续运行始终启动应用程序的最新已发布版本,从而提供流畅的版本控制。
此外,ClickOnce 应用程序安装本身是隔离的、无影响且可逆的。 应用程序不能仅依赖全局程序集缓存程序集 (其他应用程序) ,并且安装不会影响计算机的状态。 这意味着,通过“添加删除程序”或从 ClickOnce 应用程序缓存) 显式卸载 (卸载应用程序时,将删除整个应用程序。
ClickOnce 还为应用程序提供基于代码访问安全的安全部署模型。 (沙盒部分对此进行了进一步讨论。)
Web 浏览器应用程序是缓存的、仅限联机的 ClickOnce 应用程序。 除了上述优势外,它们不会永久安装在计算机上。 但是,由于它们已缓存,因此第二次运行速度更快、更高效。
注意 想要在沙盒外部安装和运行的 WPF 应用程序仍然可以是独立的 ClickOnce 应用程序,并利用类似于 Web 的部署功能。 有关 ClickOnce 的详细信息,请参阅 ClickOnce 白皮书。
浏览器托管
Web 浏览器应用程序名称得当,仅在浏览器中运行。 它们可能显示在浏览器中的顶层,或者托管在 HTML IFrame 中。
应用程序不需要根据托管在浏览器中的位置以不同的方式进行编译。
图 7。 浏览器中的 Web 浏览器应用程序
支持的浏览器
现成的 Web 浏览器应用程序可以在 Internet Explorer 6 或更高版本中运行,以及托管 Microsoft WebBrowser 控件的任何浏览器。
Internet 浏览 WBA 托管是通过创建Windows Presentation Foundation文档对象主机启用的。 第三方可以根据托管 WebBrowser 控件的给定浏览器) 的扩展性模型创作插件 (。 有关托管 WebBrowser 控件的详细信息,请参阅其他资源。
确定何时安装 WPF
为了确定何时向 .NET Framework 3.0 用户提供增强体验,可以检查用户代理字符串以确定计算机上是否安装了 WPF。 SDK 提供了一篇有用的文章,介绍了如何执行此操作。
Windows Presentation Foundation沙盒
随着 Web 分布式恶意软件和病毒的流行,用户在遇到安全提示时越来越困惑。 许多“点击通”并被烧毁。 其他人拒绝“单击”确定“,并避免安装他们在 Web 或电子邮件上遇到的任何内容。 因此,为 Web 客户提供安全且无提示的体验有许多优点。
Web 浏览器应用程序在受其部署位置限制的安全沙盒中运行。 默认情况下,所有 WBA 都在 Internet 沙盒中运行。 由于它们是沙盒且未安装,因此 Web 浏览器应用程序不需要安全提示。
沙盒的生成方式
WPF 沙盒是使用代码访问安全性 (CAS) (.NET 安全框架)构建的。 此安全模型结合使用权限集和部署区域来确定应用程序的权限。 有关 CAS 的详细信息,请参阅 代码访问安全性一文 。
沙盒功能
当今的 WPF Internet 沙盒包含丰富的功能集,使 Web 浏览器应用程序能够利用平台的大部分产品/服务。 以下列表突出显示了此功能集。
常规
Web 集成
XPS 文档
|
视觉对象
介质 (和跨域呈现)
流文档
文本
|
正在编辑
控件
|
* 即将推出 Windows Presentation Foundation 的 Beta 2 版本。
并非所有平台功能在沙盒中都可用。 这是设计的结果。 下面是 Beta 1 Internet 沙盒中未启用的功能示例。
常规
Web 集成
常规集成
|
介质
正在编辑
|
注意 由于基于区域的部署,Intranet 应用程序可能会请求在比 Internet 应用程序稍宽的沙盒中运行。 这包括启动新窗口或访问更完整的剪贴板格式集的功能。
扩展沙盒
WPF 中的扩展机制与.NET Framework中的扩展机制相同。 完全受信任的强名称签名程序集可以将自身安装到全局程序集缓存 (GAC) 。 通过将 AllowPartiallyTrustedCallers (APTCA) 属性放在程序集上,作者可以向任何 Web 浏览器应用程序打开程序集的公共 API。
生成程序集 APTCA 的决定是非平常的。 它意味着对 DLL 的安全性以及沙盒调用方 API 集的适当性给予了强烈认可。 将程序集添加到 GAC 需要 MSI 安装和安全提示。
有关编写 APTCA GAC 程序集的详细信息,请参阅本文末尾的“其他资源”。
松散 XAML
松散 XAML 文件是仅标记文件,使用 XAML 定义要呈现的视觉对象内容。 它们不是使用应用程序编译的,而是作为离散文件存在于 Web 服务器上。 与 WBA 一样,它们可以托管在浏览器或 HTML IFrame 中的顶级。 松散 XAML 始终在 Internet 沙盒中运行。
由于松散 XAML 是仅标记的,因此它被限制为仅内容呈现。 这意味着松散 XAML 不能支持按钮事件处理程序之类的内容,也不能在客户端上保留应用程序状态。 但是,它们是创建服务器生成的动态 WPF 视觉对象的一种强大且低成本的方式。
图 8。 HTML IFrame 中托管的流文档松散 XAML
如何迁移现有网站
虽然你可能会看到 Web 浏览器应用程序的好处,但从技术上或财务上不可能将整个 Web 状态转换为Windows Presentation Foundation。 本部分讨论如何以增量方式将 WPF 添加到 Web 空间。
添加宽松 XAML
可以添加 Loose XAML 以创建丰富的 WPF 内容的孤岛。 这些可以是完整的“页面”或格式文本框架、3-D 等。例如,网站可能会在 XAML 中添加其产品的虚拟化演示,然后导航到 HTML 产品信息页。 或者,在线百科全书可以保持其基于 HTML 的广告结构,同时在 XAML 流文档中显示文章内容。 (如果百科全书将其内容存储在 XML 流中,则这是一个更大的胜利,因为将 XML 转换为 XAML 的成本较低。)
将 WBA 放入 IFrame
你可能希望创建比松散 XAML 支持的更具交互性“孤岛”的 WPF 内容。 此内容需要代码才能连接 UI 事件,例如按钮单击或表单提交。 IFrame 中托管的小型 Web 浏览器应用程序可以形成此类智能 WPF 岛。
创建混合网站
你可能会大下手,决定将网站的实际基础结构迁移到一个大型 (或一系列重点) Web 浏览器应用程序。 但是,你可能没有时间或资源将整个网站移动到 WPF。 可以通过将 WPF 帧指向托管服务器上的 HTML 页来利用现有实现。 例如,如果尚未创建 WPF 聊天论坛,则可以在 WBA 中托管基于 HTML 的现有版本。
HTML 与 WPF 之间的通信
可通过多个选项在 WPF 中托管的 HTML 或 HTML 中托管的 WPF 之间启用通信:
- 使用服务器作为中介 (HTTP Web 请求) 进行通信。
- 利用托管 HTML 或 WBA URI 上的 URI 参数。
- 使用第一方 Internet Explorer Cookie。
通过实现上述解决方案的一种或组合,可以创建一种为 .NET Framework 3.0 用户创建 WPF 体验的有机方式。
结论
Web 浏览器应用程序为 Web 带来Windows Presentation Foundation的潜力。 它们支持一流的可视化效果,同时提供用于创建支持应用程序逻辑的工具。 松散 XAML 和紧密的浏览器集成提供了迁移现有站点的有效方法。 结合无缝部署情景和安全沙盒,WBA 是一个强大的 Web 技术选择。