WPF路线图白皮书: 2015及未来

简介: 介绍 当2006年微软首次推出Windows Presentation Foundation(WPF)时,它代表了应用程序的设计和开发又向前跨出了巨大的一步。它简化了GUI应用程序的开发,有助于UI和业务逻辑的分离,并且提供了统一的编程模型、语言和框架。

介绍

当2006年微软首次推出Windows Presentation Foundation(WPF)时,它代表了应用程序的设计和开发又向前跨出了巨大的一步。它简化了GUI应用程序的开发,有助于UI和业务逻辑的分离,并且提供了统一的编程模型、语言和框架。真正做到了将界面设计人员与开发人员的工作分离;同时WPF提供了全新的多媒体交互用户图形界面。

自从2006年WPF作为.NET Framework 3.0的一部分发布以来,有四个主要的修订版本。第一个是2007年发布的.NET 3.5,2008年发布的.NET 3.5 SP1,接着是2010年的.NET 4.0,最后一个修订是2012年的.NET 4.5。

image

 

许多企业使用WPF创建处理日常业务流程的应用程序和工具。任何开发流程的中断或者工具中存在的风险都会引起开发的不确定性,因此,利益相关者使用似乎要被微软束之高阁的技术而感到不安。主要的担心集中在:

  1. WPF基础技术不再改进,不在增加新的功能。随着时间的推移,将很难维护使用WPF编写的应用程序,以使其符合新的UI标准。

    2.  WPF 对开发框架的支持将逐渐减少。尽管微软为他们的工具和服务提供软件支持协议,但他们不可能涉及到所有发生的问题。技术支持主要是解决软件缺陷问题,所以像性能低下,这些不紧迫、不明确的缺陷是不会被软件支持协议所涵盖,因此是不会被支持的。

使用WPF建立关键业务应用程序,似乎从长远来看是不明智的。然而,最近的事态发展给WPF社区带来了希望。

此白皮书总结了WPF的历史,强调了平台的优势,最重要的是,将分析它的前途。

clip_image002[7]

WPF简史

技术综述

Windows Presentation Foundation(WPF)是微软.NET Framework的一个重要组成部分,于2006年作为.NET 3.0的一部分首次发布。WPF是一套使用DirectX绘制用户界面的子系统,图形将使用Windows Graphics Device Interface(GDI)来绘制。WPF在设计时充分利用了当时出现的图形硬件技术和高级别的线程,提高用户体验。

WPF使开发人员将应用程序UI设计从基础代码中分离开来,同时也提供了一套包含综合的应用程序开发功能的统一编程模型。简而言之,WPF有助于开发更好的可视化应用程序。

WPF被广泛认为是对WinForms(一个用于快速应用程序开发的旧平台)的一次重大变革,也因它的蓝灰色UI变得众所周知。虽然WinForms仍然是开发以事件驱动的Windows桌面应用程序最流行的平台,但在个性化定制和灵活性有很多不足。WPF是一个更现代的技术,并且非常灵活。

例如,在WinForm程序中创建对话框,通常按照传统的Windows对话框的形状和样式来设计的。如果需要创建更复杂的对话框是很困难的。然而WPF就非常灵活,在选择颜色、样式及对话框的交互功能时会有更多的控制权。WPF不仅能够轻松创建标准的交互功能,更支持个性化的交互和设计元素。

clip_image002[9]

 

 

常用功能和工具

开发人员选择WPF开发应用程序有很多优势:

• 允许开发人员通过数据绑定可将界面显示和业务逻辑分离。这将更易于开发、维护、测试和扩展应用程序。该架构允许在开发中应用一些设计模式,比如Model View Controller (MVC)或者 Model View ViewModel(MVVM)。

• WPF应用程序使用C#和Visual Basic语言开发。这意味着它们在网上具有大量的学习资源,包括大量的示例、论坛和活跃社区。

• UI使用XAML定义,一个强大的对象描述语言,能表示动画、图形、数据绑定和多媒体。开发人员在应用程序中采用这些技术后,使用XAML能显著减少编码工作量。

• WPF允许用户非常简单的创建能适应不同屏幕形状、尺寸和分辨率的界面。

• WPF本身有一个庞大的在线社区和第三方支持。

微软表面上疏远WPF

从2011年到2014年底,微软没有在它们的WPF博客和其它任何专门的开发者资源中发表新内容。在同一时期也没有重要更新或者新的WPF版本发布。这种沟通的缺乏让许多开发人员怀疑这个平台正在被微软抛弃的过程当中。由于诸如Windows Universal Apps 和Xamarin这些新技术应运而生,社区担心WPF将不再受到微软的重视。

虽然WPF将一定继续被支持,但真正担心的是它将成为一个传统技术。开发人员担心他们使用的是一个没有前途的平台。

然而,2014年12月12日微软WPF组发表的一篇博客打破了沉默,确认他们实际上从没停止这个平台的工作。此公告承诺受到各个开发者论坛请求的激励,将有一些新的发布和更新。从那以后,WPF组在其博客中发表了若干关于他们持续工作的文章,同时也制作了一些Channel9视频,展示的内容是他们讨论正在开发的主要新功能,比如“WPF Local”。

.NET、开源和WPF

作为一家公司,微软目前在战略和方向上正经历着相当大的变化。作为此方向的一大动作,在2014年底已经在开源社区开源其.NET的一大部分内容。通过公开其先前内部的源码,微软向开源社区敞开了巨大的拥抱。然而,虽然WPF是.NET框架的一部分,但没有迹象表明要对其开源的计划。

据微软开发平台事业部全球副总裁Soma Somasegar介绍,他们花了整整三年的时间进行开放.NET代码的准备工作。自从2014年底,每隔几个星期就有新版本发布,并且托管在GitHub上。

到目前为止主要的发布有:

• .NET compiler platform (‘Roslyn’)

• .NET Core 5

• ASP.NET 5

• .NET Base Class libraries

• .NET Web, Data and API frameworks

经历了十多年的Mono项目致力于创建兼容.NET的工具,支持开发人员所期望的创建跨平台的.NET应用程序。虽然Mono允许开发人员在Mac iOS、Android或Linux上使用.NET组件创建应用程序,但是缺乏微软提供的源代码使项目遇到了很大的阻力。微软如今坚定的支持.NET跨平台。Mono项目得以继续,将会努力为.NET做出贡献并且促使Mono更好的发展。

Soma Somasegar 解释了走向开源背后的真实想法我们必须满足开发人员的需求,而不是说‘嘿,来我们这里吧’。

image

 

微软需要长期的过程使其对开发人员更加开放和透明。尽管如此,有一系列的战略决策验证了这个选择。当2014年11月的一篇博客宣布.NET走向开源时,Immo Landwerth(微软BCL团队的高级程序经理)清楚的知道这种新做法背后的原因:

• 开发人员的工作方式变了:他们不再工作在一个平台上;相反他们通常会尝试跨平台 - Mac、iOS、Andriod和Linux。

• 消费者和企业从比以前更加广泛的媒体终端上访问IT服务。使用智能手机、平板电脑和其他操作系统运行用.NET代码编写的专业应用程序将扩展微软的业务。

• 向开源社区开源.NET对微软自己的项目也有潜在的好处。微软现在也采用非常多的开发人员的贡献。

开放.NET Core标志着微软在战略上前进了一大步。它源于一种共识,跨平台开发正变得越来越普遍,它使应用程序能运行在不同类型的设备和操作系统上变得更有意义。它也承认应用程序商店提供了一个更加开放的竞争环境,在世界各地的开发人员都可以贡献和建立自己的应用程序。允许访问微软的源代码将有助于这些个人更容易做出贡献。

尽管有这些变化,虽然世界是瞬息万变的,桌面应用仍然拥有未来。桌面应用仍然在企业IT中是非常重要的(例如,目前在平板或手机屏幕上书写甚至阅读冗长的报告是不可行的)。

引用Jay Schmelzer(微软的项目管理总监)的话:“作为一个公司,我们曾经说过,我们相信在Windows设备客户端开发的发展方向就是WinRT、应用程序商店和现代的应用程序。但是我们承认现在有一个缺口,你无法完成你想要的一切。作为一个桌面应用程序,它是键盘和鼠标导向的,WPF是很好的选择。”通过这个声明,Schmelzer确认除非桌面系统完全消失,总归有应用程序同硬件交互的需求。虽然微软鼓励开发Universal App,开发者创建的这种企业桌面工具通常不需要在智能手机和平板上使用。因此,WPF有很长的未来。

WPF路线图

经过三年的沉默,一个新的WPF路线图公告给了企业和开发者们真正的保证。对于那些怀疑他们的应用程序是建立在“传统的”技术上的人们,WPF对未来的保证给了他们真正平和的心态和继续推进他们产品的信心。

一系列的改进

当WPF路线图发布后,微软解释说,他们一直在听取来自社区请求和评论以及对开发者进行的采访。

博客发布了未来的计划,以及向平台发布一些补丁,包括:

• 在System.Windows.Input.Cursor中支持多图像光标文件。

• 支持透明子窗口。

• 通过注册表中的通用阈值距离改进双击手势识别。

• 通过双击WPF文本框控件改进文本选择。

• 改进WPF组合框控件中触控笔输入的可靠性。

主要里程碑

展望未来,微软计划在如下四大主要领域中改善WPF。

1. 性能

关于WPF用户反复投诉的就是慢的令人沮丧。因此,微软已经宣布他们的计划,在如下领域中提高性能:

• 启动

• 滚动

• ItemsControl的虚拟化性能

这些改进措施将允许开发人员编写的应用程序更高效的运行,更敏锐的响应用户的交互。这将使开发WPF应用程序有更多的吸引力,并导致使用该平台的开发人员数量的增加。

2. DirectX的互操作性

路线图还包括了更新和改进WPF与各种DirectX APIs的互操作性。尽管是一个用于创建丰富用户界面的平台,调用DirectX APIs往往是惊人的复杂。此外,DirectX在近几年有很大的发展,而WPF没有跟上步伐。微软将在其未来的更新中解决这个问题。

作为桌面应用程序变得越来越复杂,需要能够处理现代的视频、流媒体和3D图形,WPF将需要更有效的操作DirectX。路线图承诺这些都将实现。

3. 支持现代硬件

自2006年正式推出WPF以来,用户与IT的交互方式发生了巨大的变化;企业和个人在工作中与更加广泛的硬件互动。虽然智能手机和平板的销量确实在增长,台式机和笔记本电脑仍然是实施重量级和密集任务的主要手段,如涉及在多个屏幕上分析Excel数据。

桌面技术的不断提高,微软意识到保证WPF平台为硬件的进步做最充分准备的重要性。路线图为开发者提供了信心,他们将能够利用新技术设计应用程序,如触摸屏和高密度(4k)显示设备。

4. 工具

当WPF团队与开发人员开始研究找出改进平台的方法时,新工具的需求始终作为一个最高的要求。其结果是,团队改善和推出如下工具:

• 可视化诊断工具 - 以实时可视化树形式协助调试程序

• 时间轴工具 – 帮助开发人员解决项目中的问题,提高性能

• 增强的Blend – Blend for Visual Studio 2015将帮助开发人员做出更时尚更流畅的用户界面。

有信心的投入WPF

近三年来,微软对WPF及其未来保持沉默。结果社区、企业和开发商都担心该平台没有未来。然而,我们现在知道微软正在经历一段相当大的内部变革。它不仅试图用Windows8和现代UI来改变计算,也正在寻求Universal Apps和开源其.NET框架。

在这些大主题上开始出现一个清晰的画面,微软终于再次确认了他们改善和发展WPF平台的承诺。从他们现在经常更新的博客,路线图公告和增长的开源来看,马上能为组织提供其所需的能安心和安全使用的WPF。

微软已经致力于创建应用程序的新方法 - Universal Apps。这一战略已经作为对最近几年新设备激增的一种回应,以及对Windows角色的重新定位。虽然Universal Apps是微软长期目标的重心,WPF的路线图表露公司认识到世界这时还没有从传统桌面离开。

WPF路线图证实了微软在短期和长期提高该平台的贡献,并且他们致力于改善:

• 性能

• DirectX互操作性

• 支持现代硬件

• 工具

WPF路线图为组织提供了信心,他们的WPF应用程序将在未来的数月和数年得到支持。虽然对许多人来说桌面不在是与IT交互的主要手段,但它仍然是一个主要的参与者,并且会继续以目前的形式存在于可预见的未来。在这种情况下,在未来的数年内WPF将继续是一个重要的开发工具。目前已有很多产品支持WPF平台,ComponentOne Studio for WPF 也是其中之一。它是专为桌面应用程序开发所准备的一整套控件包,崇尚优雅和创新,以“触控优先”为设计理念,内含轻量级高性能表格控件,和大量类型丰富的2D和3D图表控件,能使开发出的应用程序更富创意。

相关文章
|
6月前
|
编解码 前端开发 C#
2000条你应知的WPF小姿势 基础篇<1-7>
2000条你应知的WPF小姿势 基础篇<1-7>
20 0
|
6月前
|
开发框架 .NET C#
2000条你应知的WPF小姿势 基础篇<8-14>
2000条你应知的WPF小姿势 基础篇<8-14>
30 0
|
6月前
|
Web App开发 数据可视化 程序员
2000条你应知的WPF小姿势 基础篇<15-21>
2000条你应知的WPF小姿势 基础篇<15-21>
29 0
|
9月前
|
前端开发 算法 JavaScript
走进WPF之MVVM完整案例
走进WPF之MVVM完整案例
146 0
|
前端开发 C# C++
一起谈.NET技术,WPF 基础到企业应用系列5——WPF千年轮回2
一,摘要   首先很高兴这个系列能得到大家的关注和支持,前端时间身体状况不适,所以暂停了更新,对此表示非常抱歉,以后会逐渐加快进度,不过由于这是一个很长的系列,我也想把它写好,所以以后也会慢慢来,在这个系列的过程中也会穿插发一些其他文章,比如Windows Azure、设计模式、WCF、Silverlight等,同时也会发一些自己的技术随感和心得,反正只要自己写得开心且对大家有帮助就行。
1252 0
|
前端开发 .NET C#
一起谈.NET技术,WPF 基础到企业应用系列4——WPF千年轮回
1.开篇前言      首先很高兴这个系列能得到大家的关注和支持,基于对大家负责和对自己负责的态度,我会不断努力写好这个系列,分享自己的微薄技术和经验,希望在帮助别人的同时也不断提升自己。由于这篇文章很多(现已拆分成2篇,今天这篇只是其中之一),一共花了几个个晚上的休息时间才完成,所以读者花的时间长了一些,也希望大家能够见谅,这个系列以后会每周发三到四篇左右(主要是写一篇差不多要花几晚上,感觉思维比较发散),除了讲WPF技术本身之外,也会讲一些项目具体开发,所以敬请关注。
1220 0
|
C# 索引
#WPF的3D开发技术基础梳理
原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学。但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越。
1295 0