介绍

当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。

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

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

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

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

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

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不仅能够轻松创建标准的交互功能,更支持个性化的交互和设计元素。

常用功能和工具

开发人员选择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 解释了走向开源背后的真实想法我们必须满足开发人员的需求,而不是说‘嘿,来我们这里吧’。

微软需要长期的过程使其对开发人员更加开放和透明。尽管如此,有一系列的战略决策验证了这个选择。当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图表控件,能使开发出的应用程序更富创意。

WPF路线图白皮书: 2015及未来的更多相关文章

  1. “WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心

    近日微软公布了最新的WPF路线图,一片热议:对于老牌控件提供商葡萄城来说,这是WPF系列控件一个重要的机遇,因此,Spread Studio for WPF产品做了一次重要更新,并随着Spread S ...

  2. WPF老矣,尚能饭否——且说说WPF今生未来(下):安心

    在前面的上.中篇中,我们已经可以看到园子里朋友的点评“后山见! WPF就比winform好! 激情对决”.看到大家热情洋溢的点评,做技术的我也很受感动.老实说,如何在本文收笔--WPF系列文章,我很紧 ...

  3. 如何A掉未来程序改

    话说有这样一道神题:[集训队互测2015]未来程序·改. 大意是要求写一个简单的C++解释器!这里去掉了C++的许多特性,连简单的break和continue都没有了! 话说NOI被屠了之后,一时心血 ...

  4. WPF入门介绍

    Windows Vista已经于2007年1月30正式发行零售版本,安装Vista的计算机将会大量出现.在Vista时代,身为编程员,就一定要具备Vista桌面应用开发的能力.而开发Vista桌面应用 ...

  5. WPF 本地化(多语言)

    如果你的程序需要本地化,考虑的因素诸多,例如:当文本改变后,控件的当前高度,宽度 是否合适.所在的位置是否合适.字体.布局是否合适?如果已经构建了一个真正自适应的布局,就不会有问题.用户界面应当能够调 ...

  6. [转帖]Intel Xeon路线图:7nm处理器要上DDR5、PCIe 5.0

    Intel Xeon路线图:7nm处理器要上DDR5.PCIe 5.0 https://www.cnbeta.com/articles/tech/849631.htm 在月初的投资者会议上,Intel ...

  7. WPF教程十:如何使用Style和Behavior在WPF中规范视觉样式

    在使用WPF编写客户端代码时,我们会在VM下解耦业务逻辑,而剩下与功能无关的内容比如动画.视觉效果,布局切换等等在数量和复杂性上都超过了业务代码.而如何更好的简化这些编码,WPF设计人员使用了Styl ...

  8. 介绍.NET Core

    在connect (),我们宣布.NET 核心将能完全释放,作为开放源码软件.我也答应在.NET 核心跟更多的细节.在这篇文章,我将提供.NET 核心,我们如何去释放它,它涉及到.NET 框架,如何和 ...

  9. 【CDN】- 什么是CDN

    高冷科普: CDN,Content Delivery Network缩写,即内容分发网络.通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量 ...

随机推荐

  1. archlinux 安装过程记录

    2014年安装了一次,使用U盘启动安装的,但是当时网络有问题,断断续续,没有做详细记录. 现在到了杭州,重新来一次. 使用U盘安装 下载ISO :http://mirrors.163.com/arch ...

  2. python第二天基础1-1

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'wupeiqi' print name 二.三元运算 result = 值1  ...

  3. Hibernate-list()与iterate()方法的区别

    对于list方法而言,实际上Hibernate是通过一条Select SQL获取所有的记录.并将其读出,填入到POJO中返回.而iterate 方法,则是首先通过一条Select SQL 获取所有符合 ...

  4. php图片合成

    <?php//===================== 新建一个新的 GD 图像流并输出图像========================//header("Content-typ ...

  5. 【线段树套平衡树】【pb_ds】bzoj3196 Tyvj 1730 二逼平衡树

    线段树套pb_ds里的平衡树,在洛谷OJ上测试,后三个测试点TLE #include<cstdio> #include<algorithm> #include<ext/p ...

  6. 基于 Winform + DotNetBar 写的股市行情助手

    StockViewer 股市行情助手 简介 观看股市行情,窗口太显眼,是否担心被身后的老板发现? 窗口来回切换,工作时每隔几分钟就要看一眼股市.难道只能同时做一件事情吗? 现在,一款完全免费.开源的小 ...

  7. UDP 一个封锁操作被对 WSACancelBlockingCall 的调用中断

    using System; using System.Collections.Generic; using System.Text; using System.Net.Sockets; using S ...

  8. Pyhton开源框架(加强版)

    info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...

  9. Restore Oracle database to another server

    1. Copy or remotely mount the backupset folder from the source server to the target server 2. On the ...

  10. a标签创建超链接,利用a标签创建锚点

    #Html今日学习内容 <!DOCTYPE html> <html> <head lang="en">     <meta charset ...