前言:WPF之What&Why

   自古以来,生产工具的先进程度就代表了生成力的先进程度-------生成力的发展要求人们不断的研发出新的生产工具,新生成工具的诞生又使得生产效率飞越。作为劳动生产的一种,计算机软件开发也需要工具,随着程序员们手中的工具越来越强大,软件开发的效率和质量明显提高。善于学习和掌握新工具、新技术的程序员们也总是能得到更多的实惠。


         微软Windows操作系统已经成功推出10多年,在WIndow系统中从事图形界面(Graphic User Interface,GUI)的开发程序员数不胜数,GUI程序员们手中的开发工具经历了Win32API------>MFC(及同类软件产品)-------->ActiveX/COM/Visual basic------>Winform的变迁,每一次变迁都使得开发效率和质量产生飞跃。从2007年开始,微软推出新一代GUI开发工具Window Presentation Foundation(直译为Windows表示基础,WPF),并且把WPF作为未来10年Windows平台开发GUI的主要技术。时至今日,不仅Windows Vista、Windows7、Windows Server2008、Windows Server2008R2等系统已经无缝集成了WPF,连Visual Studio 2010等重要产品已使用WPF进行开发,可见微软在WPF技术方面的务实和创新。


        什么是WPF?


        WPF 是Windows Presentation Foundation的简称,顾名思义是专门用来写程序表示层的技术和工具。


        WPF的功能?


        WPF的功能是用来编写应用程序的表示层,至于业务逻辑层和数据层也有专门的新技术,比如业务逻辑层的新技术WCF(Windows Communication Foundation)和WF(Windows Workflow Foundation)。微软用于表示层开发的技术不算少,包括WPF,Windows Forms,ASP.NET,Silveright等。换句话说,无论使用哪种技术做为表示层技术,程序的逻辑层和数据层都是相同的。


       WPF和Silveright的关系


        目前,.NET开发人员学习WPF回报是非常高的,原因是在微软整个新一代开发框架都能看到它的影子,微软新一代开发技术框架包括Windows Presentation Foundation(WPF),Windows Communication Foundation(WCF),Windows Workflow Foundation(WF),在后续的文章中我们会专注于将WPF,而WCF的用途是编写分布式应用程序的业务逻辑层,并以网络服务的形式暴露给客户端的服务消费者,基于WCF和Entity Framework的WCF Data Service和WCF RIA Service是微软迄今最佳的数据访问层,而这一数据的最佳消费者就是WPF和Silveright,所以学习WPF技术会给WCF的学习锦上添花。WF的主要作用是设计工作流,而设计工作流的编程语言正是WPF中界面编程语言----XMAL,学习完WPF,WF也就会了一小半。


         如果说学习完WPF完成以后就学会了一小半的WF,那么学习完WPF以后,Silveright也就学会了80%,为什么这么说呢?因为微软原本定义Silveright是WPF的子集,是WPF的"网络版"(Silveright的开发代号为WPF/E,意为WPF简化版)。为了让WPF的浏览器跑出来,微软所做的事情就是在技术原理不变的情况下对WPF进行瘦身------去掉一些不常用的功能,简化一些功能的实现,对多组实现同一目的类库进行删减,只保留一组,在添加一些网络通信功能,通过以下这张表,可以看到Silveright和WPF的技术重叠率之高:


image.png


如今Silveright炙手可热的另一个原因是微软上一代手机平台Windows Phone 7也采用它来作为开发平台(此前的Windows Mobile使用的简化版的Windows Form作为开发平台)。WIndows Phone7中运行Silveright与浏览器中运行Silveright别无二致,因此学习完WPF之后,手机平台上的程序也会写了。当然,Window Phone8将继续支持这项技术。


          为什么要学习WPF?


           许多朋友也许会问:既然表示层技术那么多,为什么还要推出WPF作为表示层技术呢?我们话精力学习WPF有什么收益和好处呢,这个问题我们从两个方面进行回答。


           首先,只要开发表示层程序就不可避免的要和4种功能性代码打交道,他们分别是:


            数据模型:现实世界中事物和逻辑的抽象。


            业务逻辑:据模型之间的关系和交互。


            用户界面:由控件构成,于用户进行交互的界面,用于把数据展示给用户并响应用户输入。


            界面逻辑,控件与控制之间的的关系和交互。


            这4种代码的关系如图2所示:

image.png


 在保持代码可维护性的前提下,如何让数据能够顺畅的到达界面并灵活显示,同时方便的接收用户操作,历来是表示层开发的核心问题,为此,人们研究出了各种各样的设计模式,其中经久不衰的MVC(Model---View----Controler)模式,MVP(Model----View----Presenter)模式等。在WPF出现之前,Winform,Asp.net都采用”事件驱动“理念,这种由”事件----订阅-----事件处理器“关系交织在一起构成程序,尽管可以使用MVC,MVP模式,但一不小心就将界面逻辑和业务逻辑纠缠在了一起,造成代码复杂难懂,Bug难以排除。而WPF则是微软在开发理念上的一次升级-----由”事件驱动“变成了”数据驱动“。


        数据驱动时代,用户每进行一个操作会激发程序发生一个事件,事件发生以后,用于响应事件的事件处理器就会执行,事件处理器是一个方法(函数),在这个方法中,程序员可以处理数据或调用别的方法,这样,程序就在事件的驱动下向前执行。可见事件驱动的数据是静态的,被动的;界面控件是主动的,界面逻辑和业务逻辑之间的桥梁是事件。而数据驱动正好相反,当数据发生改变的时候会主动通知界面控件,推动控件展示最新的数据;同时用户的操作会直接送达数据,就好像控件是”透明“的。可见,在数据驱动理念里,数据占主导地位,控件和控件事件被弱化(控件事件一般只参与界面逻辑,不再染指业务逻辑,使得程序复杂度得到有效的控制)。WPF中,数据与控件的关系就是哲学中内容与形式的关系,内容决定形式,所以数据驱动界面,这非常符合哲学原理,数据与界面间的桥梁就是数据关联(Data Binding),通过这个桥梁,数据可以流向界面,再丛界面流向数据源。


        简而言之,WPF的开发理念更符合自然哲学的思想。使用WPF进行开发较之WInform开发要简单,程序更加简洁清晰。


        其次,微软将WPF理念扩展到几乎所有的开发平台,包括桌面平台,浏览器平台,手机平台。


        WPF的完整版可以运于在Windows下开发下的桌面应用程序(当然,这些应用程序也可以在浏览器中运行。)WPF的简化版Silveright,不但可以编写运行于浏览器中的富客户端程序(Rich Internet Application),也可用于编写微软手机平台中的软件,所以这些程序的开发理念都是一样的,仅在类库方面有一些差别,也就是说,学会WPF开发,Silveright和Windows Phone软件都可以触类旁观,投入这些精力是值得的。


       下一篇文章中我们再见。



————————————————

版权声明:本文为CSDN博主「星火燎猿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/fwj380891124/article/details/8083854


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864