WPF 基础系列2—WPF前世今生

1.开篇前言

      很多时分了解一项新技术的汗青和趋势经常比这项技术的自身价值还要首要。WPF作为一项新技术(曾经三年多了,或者应该叫老技术了),大家都有需要了解它 的前因后果,特殊是公司的CTO、技术总监、架构师等决策层,因为他们对技术的选型及应器具有抉择权。关于开辟者来说,了解自己正在从事的这个技术的前世 此生,有助于大家更好的熟悉技术自身的价值,也能够避免大家少走一些弯路(圣殿骑士 就走过很多弯路,所以对此比较慨叹)。从IT技术展开的这些年能够看出,技术关于各大公司只是竞争的一种伎俩,而关于大多半轨范员来说技术就是特饭碗以至 于生命,所以人人站的立场分歧,也会构成各自分歧的观念。放眼如今的全球IT巨擘,摩托罗拉和诺基亚等企业的逐步式微,苹果、谷歌和微软等巨擘公司在硅谷 曾经演出了三国大战。国内腾讯、百度、新浪、网易、浩大、搜狐、阿里巴巴等公司在各个领域的混战曾经标明新的市场和新的技术是他们的首要疆场,那么有些老 技术必将淡出汗青舞台,部分新技术也将被推到台前,作为IT人了解这些能够辅佐大家看得更远,避免不时处在自己的狭小空间当中,等到了某个技术的真正失 踪,大家才骤然发现赋闲曾经来临到大家身边,出路将一片灰暗!

2.本文提纲

· 1.开篇前言

· 2.本文提纲

· 3.WPF介绍

· 4.WPF技术发展历史

· 5.之前的技术——逐渐淡出历史舞台

· 6.WPF——王者的到来

· 7.与现有技术的对比

· 8.本文总结

. 9.系列进度

3.WPF介绍

      Windows APIWindows Presentation Foundation (WPF) 是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序。使用 WPF,您可以创建广泛的独立应用程序以及浏览器承载的应用程序。 WPF 的核心是一个与分辨率无关并且基于向量的呈现引擎(这样就可以保证图像和影像具有高清晰度),旨在利用现代图形硬件的优势。WPF 通过一整套应用程序开发功能扩展了这个核心,这些功能包括可扩展应用程序标记语言 (XAML)、控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和版式。WPF 包含在如下图的 Microsoft .NET Framework 3.0中,使您能够生成融入了 .NET Framework 类库的其他元素的应用程序(因为WPF包含在.NET Framework 3.0 里面,所以我们这里不列出3.5和4.0的框架)。

 

 

netframworkimage                                                            .NET框架以及元素依赖图

4.WPF技术发展历史

微软在1983年春季就宣布开始研究开发Windows,到现在已经有27年的历史,这27年来,微软官方主力推行的编程语言与API有四个主要阶 段:

  • 1983~1991年:C搭配Windows API。当时的程序员是很少的,并且开发一个项目也比较的不容易。
  • 1992~2001年:这段时期C++搭配MFC库。在历史上MFC是最多人用的Windows编程方法。但此后MFC技术也逐渐 退出了历史的舞台。
  • 2002~2006年:(C#、VB以及其他语言)+Windows Form框架。这段期间IT技术的焦点是在Web上,所以虽然大家都在用.NET,但真正的主角是ASP.NET,而不是Windows Forms。Windows Forms还没等熬出头,WPF就出现了。Windows Forms注定会是历史中“最少人使用的微软开发技术”。Windows Forms其实是不错的技术,在很多方面都做得挺不错,比如在UI上、图形编程上、开发效率上、稳定性上都做得很让人敬佩,但是我们最后看到的结果却是大 家没有引起足够的重视,很多人更偏向于用Delphi和MFC,对Windows Forms却视而不见,所以造成的最后结果就是Windows Forms生不逢时。
  • 2007~现在 :2007年1月30日,Windows Vista正式全球同步发布。它之所以能实现那么绚丽的效果,最关键的一点就是Windows Presentation Foundation(WPF),WPF所带来的震撼视觉效果和用户体验使Vista的效果如此绚丽,虽然Vista在后来最终成为了一个败笔,但它为 Windows 7打下了坚实的继承。后台语言(C#、VB以及其他语言)+XAML构成的WPF。你可能觉得很奇怪,微软为何释出两个作用相似,却不同且不相容 的.NET API。因为时代的改进,用户对视觉感受需求不断提高。因为WPF支持硬件加速、精确颜色、浮点坐标、动画实现、三维、视频感受等要求提高。而传统的 Winform 是到不到这些效果的。

5.之前的技术——逐渐淡出历史舞台

      旧的事物迟早会退出汗青舞台,新的生命会经由曲折的里程登上王座。从图像界面的呈现那一刻起,用户界面(UI)就进入了 一个非凡的汗青时代。在随后几年里,呈现了很多具有汗青意义的界面作风。如今,经典的Windows窗口作风曾经存在了10多年,即就是深受用户喜好的 Windows XP作风也已呈现5年有余。无疑人人与我一样,等待着全新视觉界面的呈现。另一方面,当今较量争论机措置芯片飞速展开,特殊是展现芯片,展现卡简直成为了 一台微型的较量争论机。然则,其强大的措置才干却没有获得充沛的应用。今朝,展现卡GPU(Graphics Processing Unit)的措置才干大多只应用在游戏和多媒体领域。为了给用户供应最强的体验,知足不时提高的用户视觉需求,Windows Vista引入了全新的图形子系统——WPF。她能充沛应用展现卡的措置才干供应给用户最绚的视觉效果。

在Windows Vista呈现之前,Windows平台的图形系统首要有:GDI、GDI+、Direct3D。个中,GDI的应用领域最为普遍。GDI图形系统曾经构 成了很多年而且曾经逐步构成了自己的一套开辟系统。它供应2D图形措置、文本措置,以及有限的图像措置功用。虽然在一些展现卡上支撑部分的GDI加快,然 则其效果与如今的Direct3D相比照样很弱小。GDI+劈头呈现是在2001年,它引入了2D图形的反走样、浮点数坐标、突变以及单个象素的 Alpha支撑。它简直支撑一切的常用图像花样。然则,GDI+没有任何加快功用(悉数是用程序完成)。

 image

 

image
                   NT依赖简图

为了兼容性,GDI和GDI+在Windows Vista和现在的Windows 7中仍被支持,只是功能稍有改变,但大体上都还是没有差别。

6.WPF——王者的到来

      在Windows Vista和Windows 7中,GDI、GDI+和WPF并行存在。但是,WPF所有的操作都不依赖于GDI和GDI+,而是间接依赖于强大的Direct3D。请参考下面的 WPF核心组件图。

image  
              WPF核心组件图

      上图中的标示为暗红色的是WPF的三大核心组件,其中milcore组件,它的职责是完成与Direct3D的交互。并且出于效率和安全考 虑,milcore由非托管代码实现。WPF 中的所有显示是通过 DirectX 引擎完成的,可实现高效的硬件和软件呈现。WPF 还要求对内存和执行进行精确控制。milcore 中的组合引擎受性能影响关系大,需要放弃 CLR 的许多优点来提高性能。

WPF的两大核心组件PresentationFramework和PresentationCore都位于通用语言运行库(CLR)之上。那么就 可以看出,WPF的大部分代码都是以托管形式存在的。这两大组件提供了WPF项目需要的函数库和功能库,由于是以托管的形式存在,所以也避免了我们直接操 作底层和出现诸如内存泄露的可能性。

关于WPF的是怎样执行的,我这里也根据自己的一些理解画出了如下执行序列图。此图比较简单,但很容易说明问题,如果把中间的每一步骤都画出来,可 能会比较大,为了使大家能看明白,所以中间省略了一些操作。

image

                                               WPF执行序列图

前面说了WPF的前世今生,那么对于开发人员,我们最关心的WPF所提供的功能。下面的这幅图展示了WPF基本功能和服务。image 
                                                    WPF基本功能结构

正如上面的这幅图,可以看出一共分成了五大块(Core Presentation、User Interface Services、Base Services、Document Servies和XPS Viewer):

  • Core Presentation:包含了所有的图形效果,如图形、2D图形、3D图形、文本、音频、视频和显示效果。同时还包 括强大的动画效果,动画可以应用前面的所有元素。最下面的那个就是视觉基本元素。
  • User Interface Services:包含了Application Services(应用程序服务)、Deployment Services(部署服务)、Controls(控件库)、Layout(布局)和Data Binding(数据绑定).
  • Base Services:提供了XAML支持、Accessibility(提高开发效率)、 Input&Events(输入和事件的支持)、Property
    System(属性系统)。
  • Document Servies和XPS Viewer则提供了基本的打印和表报服务,可以通过这些组件实现自定义的打印和显示 效果。

基于上面的特性以及我们使用的情况可以总结出:

      在输入方面:WPF支持键盘、鼠标、手写笔、触摸屏,蓝牙录入、视频扑捉等,所以基本没有任何限制,在和外部设备的交互上:有驱动、COM、Win32或 通信协议支持的任何设备。打印和报表方面:可访问打印对话框、打印队列、打印窗体、控件以及很多可选操作,同时对报表也支持得很好。同时支持流文档和固定 文档,对命令的支持以及对文件的无限制访问,最后尤其在动画、图形图像、3D、影像的支持相当好(其他技术是很难做到的),所以WPF除了在性能方面存在 着缺陷以外,其他方面可以说是做得非常优秀,同时我们有信心相信微软会在这方面做得更好!

7.与现有技术的对比

WPF作为一项已经用了将近三年的技术,它到底和现有的一些技术有哪些区别和联系呢?下面一副图简单的介绍了它和现在的一些技术的相似之处。

WPF

现在的技术

XAML

XHTML

Layout

WinForms 2.0 Panels

Data Binding

ASP.NET Syntax

Data Templates

ASP.NET Templates(Atlas)

Styles

CSS

Control Templates

 

3D

Managed DirectX

Animation

Flash

从上面可以看出,WPF技术和其他的技术有很多相似之处,比如XAML和XHTML、Styles和CSS等尤其相似,所以对我们的开发人员来说学 习也不是一件难事。

8.总结

       这篇文中介绍了WPF的前世今生,同时介绍了WPF的运行原理和基本应用,在最后也介绍了WPF所包含的主要功能和与现有技术的对比,那么在下一篇我们会 讲解WPF的实际开发,通过一个案例对比WPF和之前的WinForm之间的差别,从而对WPF有一个正确的认识。

   

 

慧都点评:

正如本文作者讲述的一样,随着电脑硬件设备的高速更新,特别是图形处理系统GPU的飞速发展,硬件系统已经不再成为制约软件性能的主要因素,越来越 多的软件开发商开始选择WPF,越来越多的用WPF开发的效果绚丽,超强的用户体验,简单便捷部署方式的软件应用到生活和工作中。

与此同时各大控件开发商也在WPF开发方面推出自己的WPF控件,下面就为大家推荐几款非常棒的WPF的控件。

1、最早,最有名气的当属美国ActiproSoftware公司出品的:WPF Studio WPF studio 包含12个WPF子控件,囊括了,图表,条码,表格,编辑器,预览,元素库等等WPF开发中最有用的控件。根据慧都控件网测试和客户反馈来看,WPF Studio是功能最强大,效果最好的WPF控件。

2、传统WinForm老大,DevExpress 开始发力,在最新版的DEV2010中同步推出DXperience™ WPF Subscription  控件包,包括了表格、图表、工具条、打印输出、数据编辑、导航面板、页面布局等10个子控件,以DevExpress的业界老大的实力,这款DXperience™ WPF Subscription 绝对是性价比和功能强大的象征。

3、来自加拿大的ComponentArt公司,同样在2010推出控件套包 WIN.UI FOR WPF 包含16个功能子控件,

 

功能十分强大,加上其比较便宜的价格,性价比尤其突出。

4、ComponentOne公司的 ComponentOne Studio for WPF 2010 v1  ,套包中包含21个功能子控件,除了包含常见的图表,报表,编辑器,工具条等,甚至包含了媒体播放器,颜色编辑器等等特别功能。ComponentOne 更新比较快,从其Rodemap看,其2010 V2版本,将新增日历,地图,停靠面板等新功能。因此它适合功能需求全面的用户,价格相对偏高,适合大中型软件企业。

posted on 2012-05-03 11:35  刺客mrchenzh  阅读(890)  评论(1编辑  收藏  举报

导航