- A+
前言
1.基本概念
WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,由 .NET Framework 3.0 开始引入,与WCF (Windows Communication Foundation)及 WF(Windows Workflow Foundation)并行为新一代 Windows操作系统以及 WinFX 的三个重大应用程序开发类库。
2.功能定位
对于一般程序而言通常包含3层架构:数据层、业务逻辑层、表现层,这三层结构的功能大致如下:
数据层:
存储数据。多由数据库构成
业务逻辑层:
根据需求实现业务功能。通过一组Service向表现层公开功能,通过DAL(Data Access Layer)与数据层进行交互
表现层:
向用户展示数据。通常被称为客户端程序
WPF的功能是用来编写应用程序的表现层
扩展:业务逻辑层——WCF、WF;数据访问层——WCF DataService、WCF RIA Service
3.功能结构
表示层程序一般包括以下四种功能性代码
-
数据模型:现实世界中事物和逻辑的抽象。
-
业务逻辑:数据模型之间的关系与交互。
-
用户界面:由控件构成的、与用户进行交互的界面,用于把数据展示给用户并响应用户的输入。
-
界面逻辑:控件与控制之间的关系与交互。
在WPF出现之前,Windows Forms、ASP.NET(Web Forms)等技术均使用“事件驱动”理念,界面逻辑和业务逻辑容易纠缠在一起,造成代码结构复杂难懂、bug难以排除。而WPF技术则是“数据驱动”。
事件驱动:用户每进行一个操作用会激发程序发生一个事件,事件发生后,用于响应事件的事件处理器就会执行。事件处理器是一个方法(函数),在这个方法中,程序员可以处理数据或调用别的方法,这样,程序就在事件的驱动下向前执行了。事件驱动的数据是静态的、被动的;界面控件是主动的、界面逻辑与业务逻辑之间的桥梁是事件。
数据驱动:当数据发生变化时,会主动通知界面控件、推动控件展示最新的数据;同时,用户对控件的操作会直接送达数据。在数据驱动理念中,数据占据主动地位、控件和控件事件被弱化(控件事件一般只参与界面逻辑,不再染指业务逻辑,使程序复杂度得到有效控制)。数据与界面之间的桥梁是数据关联(DataBinding),通过这个桥梁,数据可以流向界面,再从界面流回数据源。
在WPF中,把能够展示数据、响应用户操作的UI元素称为控件(Control)。控件所展示的数据称为控件的“数据内容”;控件在响应用户的操作后会执行自己的一些方法或以事件(Event)的形式通知应用程序(程序员可以决定如何处理这些事件),称为控件的“行为”或“算法内容”。
4.技术结构
WPF与Silverlight的技术对比:
技术项目 | 在WPF中 | 在Silverlight中 |
---|---|---|
XAML语言 | 完整 | 完整 |
控件 | 完整 | 完整 |
布局 | 完整 | 完整 |
Binding | 完整 | 基本完整 |
依赖属性 | 完整 | 基本完整 |
路由事件 | 完整 | 简化 |
命令 | 完整 | 无 |
资源 | 完整 | 完整 |
控件模板 | 完整 | 基本完整 |
数据模板 | 完整 | 基本完整 |
绘图 | 完整 | 完整 |
2D/3D动画 | 完整 | 简化 |
类比于Web前端,XAML可以看做HTML+CSS,用作用户界面的编写。业务逻辑的具体实现是通过C#编写,类比于JavaScript。另外,WPF中的技术点与Vue是极其相似的,可以对比学习。
个人小结
WPF是一个用来编写表现层的工具,使用数据驱动的理念,采用MVVM模式,UI界面与业务逻辑分离。