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 client应用程序。使用 WPF,您能够创建广泛的独立应用程序以及浏览器承载的应用程序。 WPF 的核心是一个与分辨率无关而且基于向量的呈现引擎(这样就能够保证图像和影像具有高清晰度),旨在利用现代图形硬件的优势。WPF 通过一整套应用程序开发功能扩展了这个核心,这些功能包含可扩展应用程序标记语言 (XAML)、控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和版式。WPF 包括在例如以下图的 Microsoft .NET Framework 3.0中,使您可以生成融入了 .NET Framework 类库的其它元素的应用程序(由于WPF包括在.NET Framework 3.0 里面,所以我们这里不列出3.5和4.0的框架)。
4.WPF技术发展历史
微软在1983年春季就宣布開始研究开发Windows。到如今已经有27年的历史。这27年来,微软官方主力推行的编程语言与API有四个主要阶段:
- 1983~1991年:C搭配Windows API。
当时的程序猿是非常少的,而且开发一个项目也比較的不easy。
- 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风格也已出现五年有余。无疑大家与我一样。期待着全新视觉界面的出现。还有一方面,当今计算机处理芯片飞速发展,特别是显示芯片,显示卡差点儿成为了一台微型的计算机。可是,其强大的处理能力却没有得到充分的应用。
眼下。显示卡GPU(Graphics Processing Unit)的处理能力大多仅仅应用在游戏和多媒体领域。为了给用户提供最强的体验,满足不断提高的用户视觉需求,Windows Vista引入了全新的图形子系统——WPF。她能充分利用显示卡的处理能力提供给用户最绚的视觉效果。
在Windows Vista出现之前,Windows平台的图形系统主要有:GDI、GDI+、Direct3D。
当中,GDI的应用领域最为广泛。GDI图形系统已经形成了非常多年而且已经逐渐形成了自己的一套开发体系。
它提供2D图形处理、文本处理,以及有限的图像处理功能。尽管在一些显示卡上支持部分的GDI加速。可是其效果与如今的Direct3D相比还是非常弱小。GDI+開始出现是在2001年,它引入了2D图形的反走样、浮点数坐标、渐变以及单个象素的Alpha支持。
它差点儿支持所有的经常使用图像格式。
可是,GDI+没有不论什么加速功能(所有是用软件实现)。
为了兼容性,GDI和GDI+在Windows Vista和如今的Windows 7中仍被支持。仅仅是功能稍有改变。但大体上都还是没有区别。
6.WPF——王者的到来
在Windows Vista和Windows 7中,GDI、GDI+和WPF并行存在。
可是,WPF全部的操作都不依赖于GDI和GDI+。而是间接依赖于强大的Direct3D。请參考以下的WPF核心组件图。
上图中的标示为暗红色的是WPF的三大核心组件,当中milcore组件,它的职责是完毕与Direct3D的交互。而且出于效率和安全考虑,milcore由非托管代码实现。WPF 中的全部显示是通过 DirectX 引擎完毕的,可实现高效的硬件和软件呈现。WPF 还要求对内存和运行进行精确控制。milcore 中的组合引擎受性能影响关系大,须要放弃 CLR 的很多长处来提高性能。
WPF的两大核心组件PresentationFramework和PresentationCore都位于通用语言执行库(CLR)之上。那么就能够看出,WPF的大部分代码都是以托管形式存在的。
这两大组件提供了WPF项目须要的函数库和功能库,因为是以托管的形式存在,所以也避免了我们直接操作底层和出现诸如内存泄露的可能性。
关于WPF的是如何运行的,我这里也依据自己的一些理解画出了例如以下运行序列图。此图比較简单,但非常easy说明问题,假设把中间的每一步骤都画出来,可能会比較大,为了使大家能看明确,所以中间省略了一些操作。
WPF运行序列图
前面说了WPF的前世今生,那么对于开发者。我们最关心的WPF所提供的功能。以下的这幅图展示了WPF基本功能和服务。
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有一个正确的认识。
最后圣殿骑士 会尽心尽力写好这个系列,同一时候因为是自己对这些技术的使用总结和心得体会,错误之处在所难免。怀着技术交流的心态。在博客园和51CTO发表出来,所以希望大家可以多多指点,这样在使一部分人受益的同一时候也能纠正我的错误观点。以便和各位共同提高,兴许文章敬请关注!
posted on 2017-07-25 09:43 yjbjingcha 阅读(269) 评论(0) 编辑 收藏 举报