Wpf简介
一:wpf简介
WPF(Windows presentation Foundation),专门用来编写程序表示层的技术和工具。
多层架构一般至少包含三层:
数据层:用于存储数据,多由数据库构成,有时候也用数据文件辅助存储数据。比如医院的药品列表、人员列表、病例列表都存储在这一层
业务逻辑层:用于根据需求使用计算机程序表达现实的业务逻辑。例如流程。因为这一层需要与数据库进行交互,所以经常会划分出一个名为“数据访问层”(Data Access Layer,DAL)的子层专门负责数据的存储。
表示层:负责吧数据和流程展示给用户看,对于同一组来自业务逻辑层的数据,我们可以选择多种表达方式。例如:可以用表格形式表达,可以使用饼图表达,而且不拘泥桌面程序,可以在手机或浏览器里。
WPF的功能就是用来编写应用程序的表示层的。业务逻辑层的新技术是WCF(Windows Communication Foundation)和WF(Windows WorkFlow Foundation)。
二:WPF与Silverlight的关系
Silverlight是WPF的一个子集、“网络版”。
三:为什么要学习WPF
只要开发表示层程序就不可避免地要与4中功能性代码打交道:
数据模型:现实世界中事物和逻辑的抽象
业务逻辑:数据模型之间的关系与交互
用户界面:由控件构成、与用户进行交互的界面,用于把数据展示给用户并响应用户的输入。
界面逻辑:控件与控制之间的关系与交互。
在保持代码可维护性的前提下,如何让数据能够顺畅地到达界面并灵活显示,同时方便地接收用户的操作历来都是表示层开发的核心问题。
在WPF出现之前,Windows Forms、ASP.NET(Web Forms)等技术均使用“事件驱动”理念,这种由“事件->订阅->事件处理器”关系交织在一起构成的程序,尽管可以使用MVC、MVP等设计模式,但一不小心就会使界面逻辑和业务逻辑纠缠在一起,造成代码变得复杂难懂、bug难以排除。而WPF技术则是在微软开发理念上的一次升级——由“事件驱动”变成“数据驱动”。
事件驱动,用户每进行一个操作会激程序发生一个事件,事件发生后,用于响应事件的事件处理器就会执行。事件处理器是一个方法,程序员可以在里面处理数据或调用别的方法。这样,程序就在事件驱动下执行了。可见,事件驱动时代的数据是静态的、被动的;界面控件是主动的、界面逻辑与业务逻辑之间的桥梁是事件。而数据驱动正好相反,当数据发生变化时,会主动通知界面控件、推动控件展示最新的数据。同时用户对控件的操作会直接送达数据,就好像控件是“透明”的。可见在数据驱动理念中,数据占据主动地位、控件和控件事件被弱化(控件事件一般只参与界面逻辑,不再染指业务逻辑,使程序复杂度得到有效控制)。WPF数据与界面之间的桥梁是数据关联(Data Binding),通过这个桥梁,数据可以流向界面,再从界面流回数据库。
简而言之,WPF的开发理念更符合自然哲学的思想,内容决定形式所以数据驱动界面。使用WPF开发较之Windows Forms开发要简单,程序更加简洁清晰。
其次,微软已经把WPF的理念扩展到了几乎全部开发平台,包括桌面平台、浏览器平台和手机平台。WPF的完整版可用于在Windows平台上开发桌面应用程序(这些桌面应用程序也可运行在浏览器中);WPF的“简化版”,也就是Silverlight,不但可以用于编写运行在浏览器中富客户端程序(Rich Internet Application),也可以用于编写运行于最新手机平台Windows Phone 7中的程序。所有这些程序的开发理念都是一样的,仅在类库方面有细微的差别。也就是说,学会WPF开发,Silverlight开发和Windows Phone 7开发均可触类旁通。