微软的每一个新操作系统对软件开发度带来一定冲击,但没有哪个系统能像Vista那样对开发形成如此大的冲击。Vista改变了原有的编程机制Win32 API终于要与我们说再见了,取而代之的是可管理的WinFX,而WinFX就是微软继DOS、Win16、Win32之后推出的第四代API。

Windows Presentation Foundation
Windows Presentation Foundation(以前称为“Avalon”)是 Windows 中新的关键图形子系统,它为用户界面、2D 和 3D 图形、文档和媒体提供了统一的方法。它在 .NET Framework 基础上生成,并利用 Direct3D 进行基于向量的呈现,为生成所有种类的浸入式应用程序提供了强大的解决方案。另外,Windows Presentation Foundation 通过提供声明性编程模型来实现“工具性”和灵活性,从而使设计人员成为开发过程不可分割的组成部分。
可按照如下方式对 Windows Presentation Foundation 背后的设计原则进行分类:
·继承:Windows Presentation Foundation 提供横跨表 1 中所标识服务的统一 API。如今的开发人员面临着无数种不同技术和 API 的选择,具体取决于他们是面向 2D 图形(GDI 或 GDI+)、用户界面(USER32 或 Windows 窗体)、媒体 (DirectShow) 还是 3D(Direct3D 或 OpenGL)。Windows Presentation Foundation 提供了一个与上述所有服务正交的单个模型,并允许将内容无缝地集成到单个应用程序。可使用相同的构造来实现动画、数据绑定和样式设置,而无需顾及是面向 2D、3D 还是文本内容。
·向量图形。正如引言所述,Windows Presentation Foundation 充分利用了作为现代 PC 系统的组成部分的强大的图形处理单元。本质上,组合引擎基于向量,允许对所有输出进行缩放以便与特定计算机的分辨率匹配。呈现体系结构使用 Direct3D 来完成所有输出:在使用硬件实现 DirectX 7 或更高版本的视频卡上,Windows Presentation Foundation 尽可能地使用 GPU 来呈现输出。在无法使用硬件呈现的情况下,可以退而求其次使用软件呈现。最后,浮点逻辑像素系统和 32 位 ARGB 颜色支持提供丰富的、预见到未来技术需要(如高 DPI 显示器)的高保真体验。
·声明性编程。Windows Presentation Foundation 引入 XAML(可扩展应用程序标记语言),这是一种基于 XML 的语言,用于实例化和填充嵌套对象层次结构。尽管 XAML 并非专门局限于 Windows Presentation Foundation,但它本质上是适合于诸如 UI 定义和构建这样的任务的。XAML 的设计使应用程序可在运行时分析和操纵动态工作流方案的 UI 逻辑。重要的是,Windows Presentation Foundation 中体现的 XAML/代码隐藏模型使设计人员和开发人员可使用诸如 Expression“Sparkle”这样的工具以及第三方专家工具(包括 ZAM 3D 和 Mobiform Aurora),相互协作来完成客户端应用程序的设计和开发。
·简易的部署。通过对独立应用程序和 Web 浏览器应用程序的支持,Windows Presentation Foundation 提供两种部署模型中的最佳模型。Web 浏览器应用程序从 Internet Explorer 内部运行 — 占据整个窗口或在嵌入式框架中。它们提供 Web 应用程序所闻名的易于部署的特点,并且在部分信任的沙箱内操作(沙箱能够防止客户端计算机受到恶意应用程序的侵害)。然而,它们仍然可以利用本地客户端硬件,并使用 3D 和媒体服务获得目前可以得到的最丰富的 Web 体验。另一方面,独立应用程序通过 ClickOnce 或 MSI 技术在本地安装,并且提供对基础平台的完全访问。
·文档生存周期。Windows Presentation Foundation 引入一组新的文档和打印技术。需要将数据永久保存在本地存储区的应用程序可以使用 Open Packaging Conventions(开放打包约定)— 这是一种与 Office 12 共享的基于 ZIP 的打包约定,它支持核心属性和自定义元数据、数字签名以及权限管理功能。对于希望共享文档以便在多台计算机(即使未安装相应的应用程序)之间进行协作的应用程序而言,XML Paper Specification(XML 文件规范)允许以可打印、可移植的格式确立可视化效果。
显示的体系结构关系图标识 Windows Presentation Foundation 的主要组件。(请注意,方框的大小不代表各个组件的相对大小或重要性。)

在顶层,Presentation Framework 提供了一个托管 API,它提供对基础功能的完全访问。绝大多数 Windows Presentation Foundation 开发人员都将专门使用这一层。该框架包含大量标准控件(如 Button、Label、Menu);布局面板;2D 和 3D 图形和文本基元;对图像处理效果、媒体、动画和文档服务的支持;以及对与 GDI、DirectX 和 Windows 窗体/GDI+ 之间的互操作性的支持。
Windows Presentation Foundation 的真正主力是可视系统。Windows Presentation Foundation 中的大多数元素都派生自一个 Visual 基类。可视系统组合所有数据并产生屏幕输出。我们就是在这里将视频和音频、2D、3D 和动画集成在一起,并提供某些文本布局服务。位于该体系结构模型较低位置的是组合引擎,它负责在屏幕中呈现一个可视化树,并考虑从透明层到窗口区域无效的所有方面。
Windows Presentation Foundation 中的所有呈现操作均通过 Direct3D 完成(实际上,Windows Vista 硬件徽标程序需要 DirectX 9 的 GPU)。通过将更多的图形处理操作移动到 GPU 中,我们可以让 CPU 有能力完成其他工作,从而提高性能,同时改善图形的质量。然而,这些优点并不局限于 3D 领域 — 2D 图形也利用了相同的服务;Windows Presentation Foundation 内部未使用 GDI(除非与旧式元素集成)。对于安装有 Windows Vista 的计算机而言,新的显示驱动程序模型提供了优质的输出,从而使媒体密集型应用程序获得较高的性能。
参考了MSDN上 Tim Sneath的文章

Windows Presentation Foundation
Windows Presentation Foundation(以前称为“Avalon”)是 Windows 中新的关键图形子系统,它为用户界面、2D 和 3D 图形、文档和媒体提供了统一的方法。它在 .NET Framework 基础上生成,并利用 Direct3D 进行基于向量的呈现,为生成所有种类的浸入式应用程序提供了强大的解决方案。另外,Windows Presentation Foundation 通过提供声明性编程模型来实现“工具性”和灵活性,从而使设计人员成为开发过程不可分割的组成部分。
| 表 1. Windows Presentation Foundation 服务 | |
| 基本服务 | XAML, Property System, Input & Eventing, Accessibility |
| 媒体服务 | 2D, 3D, Audio, Video, Text, Imaging, Animation, Effects, Composition Engine |
| 文档服务 | XPS Documents, Open Packaging Conventions |
| 用户界面服务 | Application Services, Deployment, Controls, Layout, Data Binding |
可按照如下方式对 Windows Presentation Foundation 背后的设计原则进行分类:
·继承:Windows Presentation Foundation 提供横跨表 1 中所标识服务的统一 API。如今的开发人员面临着无数种不同技术和 API 的选择,具体取决于他们是面向 2D 图形(GDI 或 GDI+)、用户界面(USER32 或 Windows 窗体)、媒体 (DirectShow) 还是 3D(Direct3D 或 OpenGL)。Windows Presentation Foundation 提供了一个与上述所有服务正交的单个模型,并允许将内容无缝地集成到单个应用程序。可使用相同的构造来实现动画、数据绑定和样式设置,而无需顾及是面向 2D、3D 还是文本内容。
·向量图形。正如引言所述,Windows Presentation Foundation 充分利用了作为现代 PC 系统的组成部分的强大的图形处理单元。本质上,组合引擎基于向量,允许对所有输出进行缩放以便与特定计算机的分辨率匹配。呈现体系结构使用 Direct3D 来完成所有输出:在使用硬件实现 DirectX 7 或更高版本的视频卡上,Windows Presentation Foundation 尽可能地使用 GPU 来呈现输出。在无法使用硬件呈现的情况下,可以退而求其次使用软件呈现。最后,浮点逻辑像素系统和 32 位 ARGB 颜色支持提供丰富的、预见到未来技术需要(如高 DPI 显示器)的高保真体验。
·声明性编程。Windows Presentation Foundation 引入 XAML(可扩展应用程序标记语言),这是一种基于 XML 的语言,用于实例化和填充嵌套对象层次结构。尽管 XAML 并非专门局限于 Windows Presentation Foundation,但它本质上是适合于诸如 UI 定义和构建这样的任务的。XAML 的设计使应用程序可在运行时分析和操纵动态工作流方案的 UI 逻辑。重要的是,Windows Presentation Foundation 中体现的 XAML/代码隐藏模型使设计人员和开发人员可使用诸如 Expression“Sparkle”这样的工具以及第三方专家工具(包括 ZAM 3D 和 Mobiform Aurora),相互协作来完成客户端应用程序的设计和开发。
·简易的部署。通过对独立应用程序和 Web 浏览器应用程序的支持,Windows Presentation Foundation 提供两种部署模型中的最佳模型。Web 浏览器应用程序从 Internet Explorer 内部运行 — 占据整个窗口或在嵌入式框架中。它们提供 Web 应用程序所闻名的易于部署的特点,并且在部分信任的沙箱内操作(沙箱能够防止客户端计算机受到恶意应用程序的侵害)。然而,它们仍然可以利用本地客户端硬件,并使用 3D 和媒体服务获得目前可以得到的最丰富的 Web 体验。另一方面,独立应用程序通过 ClickOnce 或 MSI 技术在本地安装,并且提供对基础平台的完全访问。
·文档生存周期。Windows Presentation Foundation 引入一组新的文档和打印技术。需要将数据永久保存在本地存储区的应用程序可以使用 Open Packaging Conventions(开放打包约定)— 这是一种与 Office 12 共享的基于 ZIP 的打包约定,它支持核心属性和自定义元数据、数字签名以及权限管理功能。对于希望共享文档以便在多台计算机(即使未安装相应的应用程序)之间进行协作的应用程序而言,XML Paper Specification(XML 文件规范)允许以可打印、可移植的格式确立可视化效果。
显示的体系结构关系图标识 Windows Presentation Foundation 的主要组件。(请注意,方框的大小不代表各个组件的相对大小或重要性。)

在顶层,Presentation Framework 提供了一个托管 API,它提供对基础功能的完全访问。绝大多数 Windows Presentation Foundation 开发人员都将专门使用这一层。该框架包含大量标准控件(如 Button、Label、Menu);布局面板;2D 和 3D 图形和文本基元;对图像处理效果、媒体、动画和文档服务的支持;以及对与 GDI、DirectX 和 Windows 窗体/GDI+ 之间的互操作性的支持。
Windows Presentation Foundation 的真正主力是可视系统。Windows Presentation Foundation 中的大多数元素都派生自一个 Visual 基类。可视系统组合所有数据并产生屏幕输出。我们就是在这里将视频和音频、2D、3D 和动画集成在一起,并提供某些文本布局服务。位于该体系结构模型较低位置的是组合引擎,它负责在屏幕中呈现一个可视化树,并考虑从透明层到窗口区域无效的所有方面。
Windows Presentation Foundation 中的所有呈现操作均通过 Direct3D 完成(实际上,Windows Vista 硬件徽标程序需要 DirectX 9 的 GPU)。通过将更多的图形处理操作移动到 GPU 中,我们可以让 CPU 有能力完成其他工作,从而提高性能,同时改善图形的质量。然而,这些优点并不局限于 3D 领域 — 2D 图形也利用了相同的服务;Windows Presentation Foundation 内部未使用 GDI(除非与旧式元素集成)。对于安装有 Windows Vista 的计算机而言,新的显示驱动程序模型提供了优质的输出,从而使媒体密集型应用程序获得较高的性能。
参考了MSDN上 Tim Sneath的文章
