1.3 作为.NET Framework的组成部分
从3.0开始,WPF成为.NET Framework的主要组件之一。(因此WPF的第一个版本直接用版本号3.0,而不是1.0!).NET Framework 3.0包含了几个新的技术(之前统称为WinFX),在图1-2中的最外一层显示了这些技术。虽然.NET Framework 3.0与Windows Vista同时发布,且默认就随操作系统安装,但是它也受Windows XP(包括Media Center版、Tablet PC版和x64版)和Windows Server 2003支持。
|
|
图1-2 NET Framework 3.0中的技术
.NET Framework 3.0完全是.NET Framework 2.0的扩展集合,图中最里面一圈的技术没有改变。虽然4项新技术基本上是独立的,但它们围绕着两个共同主题——针对托管代码重新设计,以及强调过程式代码和声明式描述的结合。
1.3.1 为托管代码而设计
所有的这些技术对于任何.NET语言(有时我们称之为托管语言)都直接可用,这些语言包括C#、Visual Basic或者C++/CLI(注意:几乎任何一种语言例如Python、Perl和COBOL等,都可以找到相应的.NET编译器)。最终,WPF应用程序和组件只不过是.NET程序集(DLL文件和EXE文件),使用的是.NET的类型、成员、定制特性等。
并且,WPF和其他新的.NET Framework 3.0组件是微软第一批主要由托管代码实现的类库。相比之下,托管的DirectX、Windows Forms和许多.NET Framework基类库是由位于非托管代码之上薄薄的包装器组成的。当然,WPF确实有一些核心东西是由非托管代码实现的,甚至还提供了一些低层的非托管API来帮助你写自己的图形CODEC(编码解码器)或者位图特效。
1.3.2 强调声明式描述
在.NET Framework的所有新增组件中,常用XAML和XML以透明的和声明式方式向外公开特性。在WPF中,XAML一般是用来表示用户界面的。在Windows Workflow Foundation(WF)中,程序也可以使用XAML来表示与工作流相关的活动。在Windows Communication Foundation(WCF)中,程序会使用XML配置文件把架构协议与应用程序协议分离开来,还可以使用XML消息和协定[简单对象访问协议(Simple Object Access Protocol,SOAP)和Web服务描述语言(Web Services Description Language,WSDL)]与其他程序进行通信。
这一切都是为了让程序员与其他领域的专家一起工作起来更方便。XAML和XML将成为所有各方使用的通用语言(很有可能通过开发工具和特定领域的设计工具)。对于WPF,“领域专家”是图形设计师,他们能够使用设计工具来创建灵活的用户界面,而程序员则可以独立地编写代码。但是程序员/设计师之所以能使用WPF进行合作,不仅仅是因为有通用的XAML语言,还因为人们已努力使WPF API所提供的功能可以通过声明方式进行访问。这给予设计工具巨大的表现力,而不用费心生成过程式代码了。
|
WPF没有提供任何Windows Vista专用的API。但是有两个有趣的隐藏特性在早期Windows版本中不受支持: l 仅在Windows Vista及其以后的版本中,3D 对象有抗锯齿特性。 l 仅在Windows Vista及其以后的版本中,非矩形或者透明窗口才支持硬件加速。 当然,WPF控件有不同的默认主题来匹配它们的宿主操作系统(Windows Vista匹配Aero,更早期系统匹配Luna或者Classic) Windows Vista中一个有利于WPF应用程序的重大改进是,有一个新的驱动模型来解决资源争夺的问题。它会对GPU资源进行虚拟化和安排,当多个使用GPU的应用程序同时运行时,它可以让你的系统运行得更顺畅。在Windows XP系统中,运行多个WPF或DirectX应用程序可能会让系统出现停顿,但在Windows Vista系统中,不会引起任何性能问题。 |





