Web开发框架高级WPF第一章.ppt
《Web开发框架高级WPF第一章.ppt》由会员分享,可在线阅读,更多相关《Web开发框架高级WPF第一章.ppt(66页珍藏版)》请在三一办公上搜索。
1、1,Web开发框架高级技术WPF专业编程指南,理工大学华信软件学院 张一鸣2012年1月10日,课程代号:1969146,2,本课程教学计划,课程代号:1969146课程学分:8分课程课时:128课时,其中理论课64,实验课64。课时分配:第一编(1 5章):理论课时12,实验课时12;第二编(612章):理论课时30,实验课时30;第三编(1315章):理论课时16,实验课时16;第四编(1617章):理论课时 4,实验课时4;总复习:4课时。,3,第1章 WPF专业编程指南,理工大学华信软件学院 张一鸣2012年1月10日,Web开发框架高级技术,4,本章主要内容,什么是WPF(视窗演示基
2、础)?GUI的发展简述WPF在软件开发中的作用WPF的体系架构WPF的核心类的层次结构WPF应用程序的创建WPF应用程序的启动与终止,5,1.1 什么是WPF?,WPF是Windows Presentation Foundation的简称,中文的含义是视窗演示基础,顾名思义是专门用来编写程序表示层的技术和工具。用WPF建立图形用户界面是微软公司的新框架、新技术,WPF是针对.NET而设计的,它受现代显示技术(如HTML和Flash)和硬件加速技术的影响,代表了当前世界计算机软件技术的最新发展方向。WPF用于二维和三维图形、动画、音频与视频技术。,6,1.2 GUI的发展简述,自古以来,生产工具
3、就代表着生产力的先进程度生产力的发展要求人们不断研发出新的生产工具,新生产工具的诞生又使生产效率出现飞跃。作为劳动生产的一种,计算机软件开发也需要工具,随着程序员手中的工具越来越强大,软件开发的效率和质量也越来越高。早期的计算机软件都是纯粹的字符界面的,也就是人们凭借事先培训学会的字符命令行输入给电脑,电脑再把计算的结果以字符串的形式显示给用户。这样的结果是学习难,使用难,阅读难,不宜推广。,7,GUI的发展简述(续一),20世纪80年代,人们意识到字符界面软件的缺陷,开始探索在计算机软件中使用图形用户界面(Graphic User Interface)。美国Xerox公司PARC实验室首先进
4、行了这方面的实验。美国苹果公司在其新开发的Machtoish微型计算机的操作系统中采用了这种GUI技术并获得了巨大的成功。这些成功促使微软公司在上世纪80年代中晚期开始构建自己的GUI平台,即Windows 1.0,但是并不成功。直到1990年微软发布Windows 3.0之前,这个GUI平台都未得到广泛的应用。,8,GUI的发展简述(续二),1990年微软推出Windows 3.0终于获得成功,而GUI平台是这种成功的基础保障。这个GUI平台由两个动态链接库(DLL)组成,即User和GDI。但是这个GUI平台的使用还是比较麻烦的。1991年微软公布了Visual Basic 1.0,它构建
5、于User和GDI之上,并提供了一个简化的编程模型UI。内部外号为“Ruby”的UI的使用比原来的Windows API要简单的多,受到很多程序员的欢迎,也使得VB的使用量大涨。,9,APIGUI的发展简述(续三),当程序员在Windows环境下开发应用程序时,会需要使用到各种Windows的资源,如读写磁盘文件,实现网络通信等。为此,微软提供了一个应用程序编程接口API(Application Programming Interface),给应用程序开发提供了Windows操作系统支持的核心功能,主要用于C/C+语言的开发。,应用软件,API,Windows,10,APIGUI的发展简述(续
6、四),Windows API包含了以下的功能组合:基本服务,提供对计算机核心资源的访问,例如内存、文件系统、设备、处理器和线程等。它用控件库,通过这些控件为应用程序提供统一的Windows视觉风格。通用对话框库,用于完成通用任务的对话框集合,包括打开文件和保存对话框、打印对话框等。图形设备接口(GDI),为应用程序提供在显示器、打印机及其他设备上进行图形输出的功能。网络服务,提供Windows操作系统中的各种联网功能。用户界面UI,提供一种管理机制,用于管理应用程序中的窗口与控件,以及来自鼠标和键盘等设备的输入信息。Windows外壳,用于组织和显示所有Windows用户界面的容器,包括桌面、
7、任务栏和Windows浏览器等。,11,APIGUI的发展简述(续五),当每次发布新版本Windows操作系统时,总会修改和增加一些Windows API,微软也总是尽力保持API的向后兼容,因此许多最初的API函数在今天的Windows系统中仍然存在。Windows API主要有以下的几个版本:Win16第一个16位版本的Windows操作系统提供的API。Win32包含在Windows NT中,用于32为版本Windows的API.Win32 for 64-bit Windows以前称之为Win64,用于64位版本的Windows XP和Windows Server 2003等的API。,
8、12,GUI的发展简述(续六),虽然早期VB的UI模型比最初的Windows API模型要简单,但是要受到许多限制,这也受到那些高级程序员的蔑视。所以专业的程序员还是直接对User和GDI进行编程,以显示自己的水平。与此同时,互联网引起了软件开发技术的巨大变革,传统的台式机窗体界面受到网页和浏览器的挑战。为应对这种挑战,微软把内部正在开发用于替代VB UI的项目“Forms3”改造成开发浏览器应用程序的平台,并命名为“Trident”(其目前的正式产品名为MSHTML.dll)。Trident促进了具有丰富文本布局、标记和脚本支持的HTML特定引擎的发展。,13,GUI的发展简述(续七),几乎
9、同时期的另一个重要事件是,美国Sun公司于1994年引入的JAVA第一次让大批程序员接受了虚拟机的概念并掌握了微软在VB中引入的代码托管技术。这使代码托管成为一种业界的主流和时尚的技术。为此,微软于2002年发布了自己的通用托管代码平台.NET Frame-work。包含在其中的Windows Forms是一个针对User32和GDI+(GDI32的升级版本)的托管代码API。Windows Forms被用于代替VB中旧的“Ruby”窗体开发包。,14,关于代码托管,在.NET框架里支持的所有开发语言如C#,VB等都使用相同的一套公共语言运行库CLR。以运行库为目标的代码称为托管代码(mana
10、ged code)。而不以运行库为目标的代码称为非托管代码。一个应用程序可以单独采用托管代码进行构建,完全依赖CLR以及.NET框架类库的相关部分。一个应用程序也可以联合采用托管代码与普通非托管代码进行构建,必要时两者交互作用。一个托管对象能使用另一个托管对象,即使它们用不同语言编写。这正是.NET 框架类库成为有效的基础设施的关键原因。,15,托管与非托管代码的特点,Windows操作系统,CLR,.NET框架类库,托管代码,CLR,.NET框架类库,托管代码,非托管代码,只使用托管代码 的应用程序,同时使用托管代码和非 托管代码的应用程序,16,GUI的发展简述(续八),1995年,微软的
11、几个程序员自主开发了用于深入控制硬件以提高处理图形速度的DirectX,随后该产品得到公司的大力支持经过数年发展,成为一种支持显卡提供复杂纹理、特殊效果和三维图形的硬件加速功能的优秀软件包。进入新千年后,微软拥有4个主要的UI平台:User32/GDI32、Ruby、Trident和Windows Forms。这些技术解决了不同方面的问题,具有不同的编程模型,被不同的用户群所使用。可是这4项主要的UI技术里没有一种能够利用DirectX技术,且这4种UI都不能提供类似现代视频游戏的独特视频播放能力,也缺乏多媒体、动画的能力。,17,GUI的发展简述(续九),这四个平台彼此独立,各自满足一部分客
12、户的需求,要混合与配合这些平台中的各个部分技术非常困难且容易出错,而且需要保持4个各自独立的开发团队,重复大量的投资,其核心技术也有很多重复,造成大量的重复浪费。,User32/GDI32,Ruby,Trident,Windows Forms,18,GUI的发展简述(续十),2001年,微软成立了一个新团队(Aralon)以便创建一个统一的界面展示平台,最终代替微软现存的4个UI平台,并且能够充分利用DirectX技术,为用户提供一个面向未来、适应互联网与移动的全新的界面显示开发平台。在2003年,这个团队的开发成果被微软作为Aralon发表,后来,进过几次改进,该项目被正式命名为WPF视窗演
13、示基础。,User32/GDI32,Ruby,Trident,Windows Forms,DirectX,WPF,19,GUI的发展简述(续十一),经历了近20年的Windows开发和约10年的Web开发,GUI程序员们手中的开发工具也经过几次变迁(每一次变迁都使得程序的开发效率和质量产生飞跃),从2007年开始,微软推出了全新一代的GUI开发工具WPF,并且把WPF定义为未来十年Windows平台GUI开发的主要技术,也是微软.NET架构在台式机、Web网页和移动处理技术领域唯一通用的展示技术开发平台。时至今日,微软的新一代产品包括Windows Vista、Windows 7、Window
14、s Server 2008、Windows 8、Visual Studio 2008和2010以及移动操作系统平台Silverlight等都全部采用了WPF。,20,.NET各个版本的关系,NET 2.0CLRWinFormsWebServicesASP.NET,NET 3.0,WCF WF WPF,CardSpace,LINQ AJAXREST,NET 3.5,.NET 2.0是整个.NET的核心.NET3.0是在.NET 2.0的基础上增加了WPF、WCF、WF、CardSpace等跟Vista有关的组件.NET 3.5除了包含.NET 3.0的全部功能外,增加了对LINQ、Ajax等技术
15、支持的全新框架库和编译器,21,1.3 WPF在软件开发中的作用,WPF在程序开发中起什么作用呢?一个实例,一家医疗单位的技术主管找到我说:“你能不能用WPF为我们开发一套业务管理系统呀?”其实,这就是一个对WPF典型的误解。误解在何处?主要是没弄清WPF的功用。当今的软件应用程序,除了一些非常小巧的实用工具外,绝大部分程序都是多层架构的程序,一般至少包含3层:数据层、业务逻辑层和表示层,它们之间的关系如下图所示。,22,应用程序三层体系结构示意图,数据库,业务逻辑处理,数据层,业务逻辑层,表示层,手机程序,桌面程序,浏览器程序,用户,23,多层架构中各层的功能,数据层:用于存储数据,多由数据
16、库构成,有时候也用数据文件辅助存储数据。比如医院的药品列表、人员列表、病例列表等都存储在这一层。业务逻辑层:用于根据需求使用计算机程序表达显示的业务逻辑。比如哪些医生可以给哪类病人看病,从挂号到取药的流程,从住院到出院的流程等,都由这层来实现。这层一般都是通过一组服务(Service)向表示层公开自己的各个功能。它所需要的数据则到数据层寻找,这项工作由它自己附设的数据访问子层(DAL)来专门处理。,24,多层架构中各层的功能(续一),表示层:负责把数据和流程展示给用户看。对于同一组来自业务逻辑层的数据,可以选择多种表达方式。比如,对于同一张药品单,可以用短信的形式提供给客户;如果客户想打印药品
17、单的详细内容,可以用表格的形式来表达;如果客户想直观地看到每种药品占总价格的比例,又可用饼图来表达。除了用于表示数据,表示层还负责展示流程、响应用户操作等。表示层程序可以在桌面程序、浏览器程序、手机程序或各种智能设备中运行,所以也被称为客户端程序。,25,专门编写表示层的WPF,WPF的功能就是用来编写应用程序的表示层,至于业务逻辑层和数据层的开发也都有专门的新技术,比如业务逻辑层的新技术是WCF(Windows Communication Founda-tion)和 WF(Windows Workflow Foundation);数据层的新技术是LINQ(Language Integrate
18、d Query)。目前微软另一个热门技术Silverlight是WPF的一个子集,专门用于移动和嵌入式开发平台。学会了WPF,也就至少学会了它的80%。而且,学会了WPF也就基本掌握了约一半的WCF和WF。,26,为何要学习WPF?,有人会问:既然已经有这么多表示层技术,为什么还要推出WPF技术呢?我们花精力学习WPF技术有什么收益和好处吗?可以从一下两方面来回答这些问题。,27,为何学习WPF(一),首先,只要开发表示层程序就必须与四种功能性代码打交道,即:数据模型:显示世界中事物和逻辑的抽象业务逻辑:数据模型之间的关系与交互用户界面:由控件构成的、与用户进行交互的界面,用于把数据展示给用户
19、并响应用户的输入界面逻辑:控件与控制之间的关系与交互。这四种代码的关系见下图所示。,28,编程中四种代码的关系,用户界面,数据模型,业务逻辑,界面逻辑,在保持代码可维性前提下,如何让数据能顺畅到达界面并灵活显示,且能方便接收用户输入是表示层开发的核心技术。人们研究了MVC和MVP等模式。在WPF出现之前,Windows Forms和ASP.NET都使用“事件驱动”概念,即“事件订阅事件处理器”方式,使用MVC和MVP模式仍会使界面逻辑与业务逻辑纠缠在一起。而WPF则是开发理念上的升级,由事件驱动变为数据驱动。,29,为何学习WPF(二),在事件驱动时,用户每进行一个操作会激发程序发生一个事件,
20、事件发生后,用于响应事件的事件处理器(一个方法或函数)就会执行,在这个方法中程序员可以处理数据或调用别的方法,这样,程序就会在事件的驱动下向前执行了。可见,事件驱动时代的数据是静态的、被动的;界面控件是主动,界面逻辑与业务逻辑之间的桥梁是事件。,30,为何学习WPF(三),WPF提出的数据驱动正好于此相反,当数据发生变化时,会主动通知界面控件、推动控件展示最新的数据;同时,用户对控件的操作会直接送达数据,就好象控件是“透明”的。所以,在数据驱动理念中,数据占主动地位、控件和控件事件被弱化。在WPF中,数据与界面的关系就是哲学中的内容与形式的关系内容决定形式,所以数据驱动界面,这非常符合哲学原理
21、。数据与界面之间的桥梁是数据关联(Data Binding),通过这个桥梁,数据可以流向界面,再从界面流回数据源。,31,为何学习WPF(四),其次,微软已经把WPF的理念扩展到了几乎全部开发平台,包括桌面平台、浏览器平台和手机平台以及其他嵌入式设备平台。WPF也是目前乃至今后相当长一段时间内微软唯一打算倾全力投资支持的展示技术开发平台。而从微软目前在软件界的霸主地位来看,熟练掌握了WPF开发技术就意味着在整个软件行业有了畅通无阻的通行证,也有了高水平和高待遇的程序员的资格证。,32,1.4 WPF的体系架构,WPF使用多层体系结构。在顶层,应用程序和一个完全由托管的C#代码编写的高层服务集合
22、交互。绘制图形的Direct3D纹理和三角形模块是其底层。中间层是媒体集成层。至于将.NET对象转换为Direct3D纹理和三角形的实际工作,在后台是由一个名为milcore.-dll的低级非托管组件完成的。,33,WPF的体系架构示意图,Direct3D,User32,底层,milcore.dll,WindowsCodecs.dll,媒体集成层,PresentationCore.dll,WindowsBase.dll,托管的WPF API,PresentationFramework.dll,milcore.dll,PresentationCore.dll,WindowsBase.dll,Wi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Web 开发 框架 高级 WPF 第一章
链接地址:https://www.31ppt.com/p-6523334.html