关于WPF的一些东东

之前不知道什么是WPF,网上搜了下,整理资料如下:

WinFX是下一代的Windows API,而WPF将是WinFX的核心一部分,用于处理UI, Document, Media和用户交互。

WPF简介
WPF的全称是Windows Presentation Foundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现)。
作为新的图形引擎,WPF是基于DirectX的,当然增加了很多新的功能。其2D和3D引擎的强大看看Vista的界面就明白了,再加上其对Aero图形引擎的支持,更加让你感到神奇。顺便提一下,Aero是专门为3D桌面开发的引擎,可以让桌面实现神奇的3D翻转,这绝对是操作系统有史以来的一次神奇尝试,虽然对硬件配置的要求也是惊人的,此前已有相关报道称,Vista对显卡十分挑剔就是出于运行Aero的考虑。

WPF前景分析

WPF其实不仅仅是图形引擎而已,它将给Windows应用程序的开发带来一次革命,因为新的架构提供了一种全新的开发模式。当然对于普通用户而言,最直观的就是界面越来越漂亮,看起来越来越舒服了;但对于开发人员而言,界面显示和代码将更好的得到分离,这与从前的桌面应用程序开发有很多不同(界面设置和代码是融合在一起的),这是比较具有革命性的改变之一。还有就是桌面应用程序和浏览器应用程序的融合,根据ms的承诺,正在开发中的WPF/E,即WPF Everywhere版本,将为基于WPF的应用程序提供全面的浏览器支持,这意味着未来开发出的应用程序将可以基于浏览器在不同的操作系统上运行,当然由于目前还在开发中,我们并不确定会不会有一定的限制,根据WPF/E开发组的定义,WPF/E仍然是WPF的子集,而不是后继版本。总体而言,WPF的前景应该是一片光明。

目前开发界的对WPF响应程度

目前已有很多人开始考虑或者已经转向WPF,一场新的学习热潮已经开始。但根据我最近的学习和了解,国内关于WPF的资料很少,除了msdn提供的资料以外,基本都是来自国外的资料,有些则是国外开发人员blog上的资料,当然都是英文的。因此如果现在能够引进一些WPF的书绝对是很好的时机。而且国外目前的几本WPF书也是刚刚上市,如果我们可以尽快引进的话,绝对可以帮助国内开发人员在最短时间内赶上国际步伐。

目前微软针对WPF提供的服务和支持

随着Vista RTM的发布,微软新一轮的技术推广已经开始。其实在此之前,WPF已经有很大的推广,因为CTP版本已经发布了有一段日子了。当然很多开发人员主要以技术研究为主,也有少数公司已经开始从事基于WPF的产品研发工作。

1. 目前WPF的正式版本已经发布(随.net framework 3.0正式版发布),你可以从msdn上免费下载

2. 相应的技术支持已经开始,但目前仅限于大客户,主要做售前技术支持,对于普通开发人员的技术支持可能要等到明年2月份才会开始(个人知道的情况,请以微软官方技术支持网站发布的信息为准)

3. WPF的VS2005插件目前还只有社区预览版(CTP版),也是从msdn上免费下载的,但正式版恐怕还要等一段时间,但使用CTP版本确实已经可以在VS2005中进行所见即所得的WPF开发。

4. WPF/E CTP版本已经发布,你可以在msdn上免费下载。同时发布的还有WPF/E Sample Pack for CTP。  

 

 

什么是“WPF/E”?
“WPF/E”是一种新 Web 呈现技术的代号,创建该技术的目的是使其能够在各种平台上运行。该技术支持创建丰富的、具有绚丽视觉效果的交互式体验,并且可以随处实现:无论是在浏览器内、在多个设备上还是在桌面操作系统(如 Apple Macintosh)中。Microsoft .NET Framework 3.0(Windows 编程基础结构)中的呈现技术 XAML(可扩展应用程序标记语言)遵循 WPF (Windows Presentation Foundation),它是“WPF/E”呈现功能的基础。

本白皮书将逐步引导您了解“WPF/E”的基本情况,以及如何使用 Microsoft 的众多工具(包括 Microsoft Expression Graphic Designer、Microsoft Visual Studio 2005 和 XAML)来构建华丽的图形站点。首先,让我们了解一下有关“WPF/E”发展历程的背景信息,以及它在开发领域所处的位置。

Web 开发的演变:转向 Web.Next

CERN 的 Tim Berners-Lee 发明现代 Web 时的初衷是将其作为允许在基于网络的系统上存储和链接静态文档的系统。之后的数年间,随着创新的发展和成熟,“活动”文档自然而然地成为了现代 Web 发展的新阶段,这些文档在收到访问请求时即会生成,文档中包含特定于时间或用户的信息。CGI 之类的技术成为了这一阶段的实现基础。随着时间的推移,在 Web 上生成文档的功能变得极为重要,技术上的发展也历经 CGI、Java、ASP,到达 ASP.NET 阶段。

在开发人员采用服务器开发模式并使用 Visual Studio 系列产品中的同类最佳工具快速开发高质量 Web 应用程序时所能拥有的能力方面,ASP.NET 树立了一个里程碑。

事实证明,用户体验是 Web 应用程序中的一大障碍,在这方面,技术上的限制使 Web 应用程序无法提供与使用本地数据的客户端应用程序同样丰富的用户体验。

XMLHttpRequest 对象(2000 年由 Microsoft 作为 Internet Explorer 5 的一部分发布)成为了异步 JavaScript 和 XML (AJAX) 技术的基础,该技术使 Web 应用程序能够对用户输入做出更加动态的响应,因为采用该技术时只会刷新网页的一小部分,并不需要重新加载所有内容。基于 AJAX 构建的创新型解决方案(如 Windows Live Local 映射)使 Web 应用程序更进一步,已经能够提供客户端式的用户体验。

“WPF/E”是应用程序开发人员和设计人员可以向其客户呈现的潜在用户体验丰富性的下一个发展阶段。它通过允许设计人员展现其创造力并以能够直接对 Web 产生影响的格式保存其工作来实现此目的。在过去,设计人员会使用提供了丰富输出功能的工具来设计网站和用户体验,但在实现能力上开发人员会受到 Web 平台的限制。在“WPF/E”模型中,设计人员可以构建其想要的用户体验,并将其表示为 XAML。开发人员随后可以使用“WPF/E”运行时直接将该 XAML 并入到网页中。因此,两者可以比以往任何时候都更加紧密地合作,从而提供丰富的客户端用户体验。

由于 XAML 属于 XML,因此它是基于文本的,也就能够为这些丰富内容提供与防火墙兼容的、易于检查的说明。尽管可以使用其他技术(如 Java 小程序、ActiveX 和 Flash)来部署比 DHTML/CSS/JavaScript 更丰富的内容,但它们都会向浏览器发送二进制内容,这种内容难以进行安全性审核,更不用说还有更新上的困难,因为进行任何更改后都必须重新安装整个应用程序,而这并不是最友好的用户体验,并可能导致页面停滞。使用“WPF/E”时,如果需要对丰富内容进行更改,服务器端会生成新的 XAML 文件;下次用户浏览到该页面时,将会下载该 XAML 并更新体验,而不需要进行任何重新安装。

“WPF/E”的核心是浏览器增强模块,其作用是呈现 XAML 并在浏览器表面上绘制所生成的图形。它的下载体积较小(不到 2 MB),可以在用户点击包含“WPF/E”内容的站点时进行安装。该模块会向 JavaScript 开发人员公开 XAML 页面的底层框架,以便能够实现在页面级与内容进行交互,开发人员于是就可以进行自己的工作,例如:编写事件处理程序或使用 JavaScript 代码来处理 XAML 页面内容。

 

微软在TechEd 2005时就已经发表.NET Framework 3.0,整体架构堆栈是在原有的.NET Framework 2.0上,附加4种新技术:革新使用者体验的Windows Presentation Foundation(WPF)、高安全性通讯的Windows Communication Foundation(WCF)、塑造商业流程范围的Windows Workflow Foundation(WF)以及Windows CardSpace等。今年TechEd 2006上,微软接连2场议程探讨WPF展示层技术(其它技术仅有单场议程)。

以往程序设计师并不重视展示层技术,况且,Adobe比微软更早提出所谓的使用者体验。有趣的是,第一场次的讲师曹祖圣于「Windows Presentation Foundation建立新一代的Windows与Web应用程序」的议程中,提出外号「Flash Killer」的接口设计工具:EID(Expression Interactive Designer)。第二场次的讲师彭靖灏,虽然是从「以Windows Presentation Foundation建立丰富的使用者操作经验」为标题,却在后半段议程中提到「使用者经验模型」,彰显出使用者经验将决定应用程序操作接口,取代程序逻辑导向的时代,更强化WPF的诉求。

整体而言,WPF并非如字面上意义所陈述,仅在于可视化展现而已,微软藉由2场议程,强化WPF技术所要揭露的精神:融合Windows-based与Web-based应用程序设计,并将系结数据显示于应用程序的可视化组件中。

Windows Presentation Foundation用途在于提供多样化媒体、使用者接口与文件等解决方案,后续文章将撷取相关议题成为报导主轴。

WPF精神:宣告式程序设计
就使用者接口而言,WPF既然是为了使设计师可以采用相同逻辑设计Windows-based与Web-based应用程序,但以往程序常区分为操作接口(或称为Markup)以及逻辑(Code),并分属画面设计人员与程序设计师两种不同角色负责处理。此外,设计师还必须为程序接口撰写大量的程序代码,藉以控制窗口上的对象。WPF不仅为画面简洁易懂,更延用一贯的宣告式程序设计,让设计师只要设定参数即可完成对象控制。曹祖圣风趣地说到:「我怀疑程序设计师是否还有存在的必要?」。

从微软为WPF所提的架构堆栈上可知,WPF底层以Windows Vista操作系统为主,接下来是Windows Vista Display Driver Model,并采用DirectX绘图引擎,特别是Composite Engine,负责2D与3D绘图处理,包括材质、光源等,除了达到宣告式程序设计的目标外,其余3个目标在于整合操作系统、采用向量式的使用者接口(UI)组合引擎、统一使用者接口、文件与媒体的程序设计方式、部署更简单等。


?
WPF的架构堆栈图,读者可以发现此技术紧密地依赖Vista操作系统。资料来源:微软

外号「Flash Killer」的接口设计工具:EID
另一个与使用者接口设计相关则是WPF技术中,用于实作接口设计工具:EID。虽然议程中曹祖圣简短地展示此工具,在简报文件中,表明EID可以产生XAML程序代码,同时也是Visual Studio 2005原生支持的使用者接口格式,使得接口设计师可与程序设计师沟通,但他语出惊人地说到,此工具外号「Flash Killer」。

此工具是否真如其名,尚未有定论,但在现场展示过程中,我们可发现此工具与早期的Flash开发工具极相似,连时间轴(Timeline)的位置也相同,当图形依时间轴产生动态效果时,简直与Flash如出一辙。

2D绘图利器:笔刷功能
虽然WPF在多样化媒体处理上,无论是2D或3D绘图,以及影片处理等,仍急起直追着Flash技术,但至少在2D绘图上已经为设计师提供许多更便利的新功能,例如Visual Brush等笔刷(Brush)。

简单地说,设计师可以将屏幕上某个画面当成笔刷,刷到另一个平面,或当成材质贴到另一个3D平面上。对纯粹绘图工具而言,笔刷是很基本的功能,但在窗口设计上,能不必经由复杂的程序设计产生这样的特效,实属2D绘图上的利器。议程中,讲师打趣地说着,这并非他的专长,「通常外包给画面设计人员,还是写程序比较好赚。」学员或许可以听出WPF在2D绘图上将更为便利。

备受瞩目的XPS文件技术
WPF另一个引人注目的革命便是文件技术。微软在下一代文件格式,都将透过Packing技术封装成ZIP档,但使用者可采用其它扩展名。学员从这场议程中将了解到,微软对XPS文件技术有着更大的野心,例如:除了直接存取XPS(XML Paper Specification,XML文件规格书)或Office 2007文件,企业用户将可以建立自订的档案格式,甚至开发文件管理解决方案。

虽然Office在办公室应用软件上的市场占有率高达90%以上,使得某些应用环境中甚至采用DOC档作为文件格式的交换标准,例如政府公文,差别只是文件内容而已。新一代的XPS文件技术可以藉由XPS文件档案格式,由使用者自订文件格式。现场的学员从XPS文件技术堆栈简报中,清楚地看到「Open XML Formats」,这是微软为解决办公室应用软件市场中对专属档案格式的疑虑,而推出的技术,特别是长期保存的文件。或者说,这也是微软为了在开放源码角力时的主力。

可视化呈现动态数据
WPF同时更新数据系结(Data Binding)功能,与ASP.NET相较丝毫不逊色。其系结目标延伸到任何元素与属性,来源除了ADO.NET以外,更包括CLR(Common Language Runtime)对象、XML、WPF元素。此外,系结模型则涵盖一次(One Time)系结、单向(One Way)系结、双向(Two Way)系结等,使程序设计师在画面上,产生多个字段的连动效果。最后是动态系结,表示当事件(event)发生后,才驱动数据系结,并反应到画面上。这场议程略为可惜之处,在于讲师仅简单地展示,却没有特别实例显现出WPF在数据系结的强大威力。但这只是冰山一角,有心的学员将会在接续的议程中体会WPF的愿景。

WPF的愿景:电子文件
第二场议程一开始,讲师彭靖灏就以简报带出WPF的愿景:电子文件。讲师提到,微软针对展示层技术所揭橥的愿景,让使用者可以用计算机屏幕浏览各式电子文件。过去,这方面的应用并不成熟,画面设计在排版或逻辑上都困难,使用者也无法习惯以计算机屏幕观看电子文件。随着展示层技术推陈出新,使用者对出版品与电子书等要求越来越高,相同的要求也反应在Web Page上。

就实作技术面,WPF分为4点愿景逐步实现,除了第一场次已说明的宣告式程序设计,首先是整合、向量组合式图形作业引擎,目的是善用个人计算机的威力和强大的3D绘图卡上图形处理效率。其次是WPF提供处理使用者接口、文件及媒体一致的作业方式,让使用操作的经验可整合至开发作业;最后是部署便利,允许管理人员安全的部署及管理应用程序。

为了让学员更了解WPF的愿景,讲师立即以其未来目的补充愿景的意涵,也就是分辨率无关的图形、双精准度浮点坐标及转换(transformation)架构、抽离硬件能力等。简单地说,电子文件关键在于浏览时的弹性,不因绘图卡、屏幕分辨率等而影响阅读。

精致的新字型与色彩显示技术
讲师提到电子文件所面对的十大挑战,有些必须仰赖第三方技术与WPF共同解决,但就WPF能力所及的革新,首先是电子内文的阅读舒适性,微软在ClearType字型上增加Y轴反锯齿功能(YDirection Anti-aliasing),使字型在放大过程中不失真。此外,在色彩显示技术上,除了传统的RGB等3原色外,另新增色彩饱和度。

以操作者角度改善程序接口
讲师在后半场的议程讨论使用者体验此议题,他也很诚实地说到,虽然与主题没有密切相关,还是建议学员参考微软所提出的接口规画模型。WPF除了展示层技术外,微软在Windows-based与Web-based整合设计的问题上,也从使用者角度重新思考操作接口的规画。Windows-based应用程序常因为程序设计师的习惯,而采用许多专业术语(例如log),造成使用者无所适从。另一个问题则在于设计师过于遵循Windows设计规范,制式地在工具列上套用File、Edit、Tools等功能,却忽略使用者最需要的按钮。相关的问题,均反应出传统Windows应用程序由设计师决定操作接口设计时,缺乏引导使用者操作的问题。相对地,Web-based应用程序常藉由超级链接功能,隐藏了按钮的枯燥与制式化。WPF结合Windows与Web两种设计后,可以让窗口化设计也具备Web化的指引模式

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值