本篇将从三个方面来看WPF的由来:
1,WPF是什么?
2,GUI开发简介
3,WPF优缺点
一,WPF是什么
WPF(Windows Presentation Foundation) , 从名字来看,Microsoft想把WPF技术作为Windows程序外观(表现层)的基础。我们知道,现在开发一套系统,一般都会采用分层架构,最基本的层次会包含表现层,逻辑层,和数据层,总之如果是GUI程序,就需要有表现层。WPF技术就是用来实现表现层的技术,在实际开发中就是做界面,做UI,它可以让界面做的非常酷,而且实现这些酷的效果并不太费力。当然了,目前WPF只能应用的window平台上,因为它是在.net framework的基础上实现的,而基于Windows平台的软件也分为桌面应用和Web应用,WPF技术被广泛应用在桌面应用的开发上,对于Web应用,微软推出了Silverlight技术,它把WPF程序嵌入到浏览器里运行,同时Silverlight技术也可以用来开发Windows Phone应用程序,对于Silverlight技术,将来可能会被HTML5取代,这里就不多说了。一句话总结:WPF是在Windows平台上用来开发GUI程序的表现层的技术
二,GUI开发简介
如下图,在Windows平台GUI开发大概经历了这几个阶段:
1、Windows API + C语言最早的开发Windows GUI程序的思路。用C语言直接调用Windows操作系统提供的API函数来开发,程序员处理Windows消息。经历过这段开发时期的程序员一般对底层比较清楚,要了解Windows操作系统的工作原理。2、MFC + C++Microsoft Foundation Class(MFC),微软用C++封装了Win32 API, C++程序员通过使用MFC类库来开发。面向对象的编程方法。3、WinForm + C#微软推出.net平台后,Winform程序是.net平台中的技术,它把Win API封装成了控件。4、WPF + C#当然也是基于.net平台的技术,从.net framwork3.0开始推出WPF技术。WPF的特点是数据驱动,而以上三者是消息驱动或事件驱动的开发模式。从图像系统角度看,WPF对图形的展示是直接使用directX技术,而其他三者是基于GDI/GDI+技术,因此WPF在图形图像处理方面很优越,提高了用户体验。其他还有一些VB+ActiveX控件,Java Swing,Delphi等开发模式,这些不太熟悉,就不多说了。我们知道,目前的应用程序很注重用户体验,而且程序的规模也越来越大,上述的技术演变刚好可以看出这点,从面向过程编程方法演变到面向对象方法,再演变到组件化方法,这都是为了提供开发效率,而WPF的出现,使应用程序在用户体验上,界面的展现效果更佳。
三,WPF优缺点
从2007年开始WPF作为.net framework3.0中的一项重要技术发布,版本号也跟随.net framework叫WPF3.0,随后发布了WPF3.5,WPF3.5SP1,WPF4.0, WPF4.5。随着版本的不断更新,WPF的能力也越来越强,其应用也越来越多。开发微软最新推出的平台应用,如: windows8, surface, windows phone8等程序,基本都要用到WPF技术。其优缺点:优点:1、使用DirectX技术,图形图像处理能力强。相对于Winform或更早的技术,WPF实现的界面效果优越很多。
2、代码后置(Code-Behind)更彻底,设计师可以用Xaml语言来设计UI,同时程序员可以开发后台交互逻辑,最后很容易集成到一起,如果需要更换界面,更换Xaml文件的设计即可。相比于之前的Winform程序,在开发流程上一定的并行化,换肤更简单。不过目前看来Blend比不上PhotoShop。所以很多设计师还是用Photoshop来实现效果图。而程序员要想做好WPF程序,也需要学习好Xaml,实现界面效果。
3、最重要的一点是,WPF是数据驱动UI的模式,相比Winform或之前的技术,它们都是通过UI来驱动数据的改变。数据驱动UI也就是说,UI控件的样子不是固定的,UI控件只是对数据的展示,而以什么样的形态来展示给用户,完全取决于控件的模板和样式,也就是说按钮不一定是一个矩形的,你可以让它变成圆形。随着学习,慢慢会体会到WPF的强大。
缺点:性能不好,对硬件要求高。
现在如果新开发的windows桌面应用程序,基本上都会考虑使用WPF, 选WinForm的比较少见。即使硬件要求高,但是顶配的硬件,加上高用户体验的软件,不也是很好的选择吗?