一个菜鸟的晋升之路由此开启。

前言

大部分程序都是多层架构的程序,一般至少包括三层:数据层、业务逻辑层、表示层。他们的功能和关系一般如下所示:

  1. - 数据层:用于存储数据,多由数据库构成,有时候也用数据文件(可以辅助存储数据)。比如医院的药品列表、人员列表、病例列表等都存储在这一层。
  2. - 业务逻辑层:用于根据需求使用计算机程序表达现实的业务逻辑。比如哪些医生可以给那些病人看病,从挂号到取号都有什么流程等。这一层一般会通过一组服务(Service)向表示层公开自己的各个功能。因为这一层需要与数据层进行交互,所以经常会划分出一个名为"数据访问层"(Data Access LayerDAL)的子层专门负责数据的存取。
  3. - 表示层:负责把数据和流程展示给用户看。对于同一组来自业务逻辑层的数据,我们可以选择多种表达方式。比如对于同一张药品单,如果想以短信的形式发送给药房,可以以一串字符的形式来表达;如果客户想打印药品单的详细内容,我们可以以表格的形式来表达;如果客户想直观地看到每种药品占总价格的比例,我们可以使用饼图来表达。除了用于表示数据,表示层还负责展示流程,响应用户操作等。而且,表示层程序并不拘泥于桌面程序,很多表示层程序都运行在手机或浏览器里。表示层程序也常被称作客户端程序。

《深入浅出WPF》学习 - 图1

WPF的功能就是用来编写应用程序的表示层,业务逻辑和数据层开发有专门的技术。比如WCF(Windows Communication Foundation)和WF(Windows Workflow Foundation)。微软用于开发表示层的技术不算少,比如WPF、Windows Forms、ASP.NET、Silverlight等。

学习WPF的原因:

①只要开发表示层程序就不可避免地要与4种功能性代码打交道:

  1. - 数据模型:现实世界中事物和逻辑的抽象。
  2. - 业务逻辑:数据模型之间的关系和交互。
  3. - 用户界面:由控件组成、与用户进行交互的界面,用于把数据展示给用户并响应用户的输入。
  4. - 界面逻辑:控件与控制之间的关系与交互。

这4种代码的关系如图:

《深入浅出WPF》学习 - 图2

在保持代码可维护性的前提下,如何让数据能够顺畅地到达界面并灵活显示,同时方便地接收用户的操作历来都是表示层开发的核心问题。为此,人们研究出了各种各样的设计模式,比如:MVC(Model-View-Controler)、MVP(Model-View-Pressenter)。

WPF采用的是”数据驱动”而不是”事件驱动”。”数据驱动”:当数据发生变化时,会主动通知界面控件、推动控件展示最新的数据;同时,用户对控件的操作会直接传达数据,就好像控件是”透明”的。在”数据驱动”理念中,数据占据主导地位、控件和控件事件被弱化(控件事件一般只参与界面逻辑,不再染指业务逻辑,使程序复杂度得到有效控制)。在WPF中,数据与控件的关系就像是哲学中内容与形式的关系——内容决定形式,所以数据驱动界面数据与界面之间的桥梁就是数据关联(Data Binding),通过这个桥梁,数据可以流向界面,再从界面流回数据源

简而言之,WPF就是好。简单、程序更简洁清晰。

②微软已经将WPF理念拓展到全平台,会了WPF,可以触类旁通。WPF发展前景好,回报大。