原文地址:http://tech.it168.com/zx/2007-09-15/200709141320653.shtml

你可能对微软的.NET框架3.0版本的最近的一次更新感到有点奇怪。主版本指出了在平台、工具或技术的一

个主要改变。但是3.0版本纯粹只是2.0版本的一个补充,2.0版本工作的方式没有任何改变,微软只是简单的
增加了一些新的东西。
       不要认为我是错误的,新的功能还很不错。Windows信息基金会为分布计算从C/S和SOA上带来了一致性。并且WWF在工作流方面比以前更加容易理解。从技术角度来说,.NET3.0也包括Windows的卡片服务,这种卡片服务看起来对鉴权和认证方面更加关心,但事实并不是这样,.NET增加的部分可能会引起巨大的版本变更。
一、WPF问世,将带来Windows GUI的全新革命
 
       下面让我们来谈谈WPF(Windows Presentation Foundation),我对WPF有一些复杂的情感,但是有一点是确定的,这是近十年来Windows的图形子系统的一次重大改变,并且它还包括除了核心图形构造和程序API的一些主要的改变。以我的观点来看,WPF是.NET版本改变的一个主要的证据。
WPF的全称是Windows Presentation Foundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现)。
    WPF作为新的图形引擎,它是基于DirectX的,当然增加了很多新的功能。其2D和3D引擎的强大看看Vista的界面就明白了,再加上其对Aero图形引擎的支持,更加让你感到神奇。
WPF 其实不仅仅是图形引擎,它将给Windows应用程序的开发带来一次革命,因为新的架构提供了一种全新的开发模式。
当然对于普通用户而言,最直观的就是界面越来越漂亮,看起来越来越舒服了;但对于开发人员而言,界面显示和代码将更好的得到分离,这是比较具有革命性的改变之一。还有就是桌面应用程序和浏览器应用程序的融合,根据ms的承诺,正在开发中的WPF/E,即WPF Everywhere版本,将为基于WPF的应用程序提供全面的浏览器支持,这意味着未来开发出的应用程序将可以基于浏览器在不同的操作系统上运行,当然由于目前还在开发中,我们并不确定会不会有一定的限制,根据WPF/E开发组的定义,WPF/E仍然是WPF的子集,而不是后继版本。总体而言,WPF的前景应该是一片光明。
随着Vista RTM的发布,微软新一轮的技术推广已经开始。其实在此之前,WPF已经有很大的推广。当然很多开发人员主要以技术研究为主,也有少数公司已经开始从事基于WPF的产品研发工作。
微软已经在Windows和.NET平台上提供了实质投资的举动是很重大的。这意味着我们最后能够期望逃脱GDI和GID+的限制,并转移到以整个现代的、面向对象的、多线程的、三维的界面技术上面去。GDI是当今Window桌面应用程序的主流图形库,GDI图形系统已经形成了很多年。它提供了2D图形和文本功能,以及受限的图像处理功能。虽然在一些图形卡上支持部分GDI的加速,但是与当今主流的Direct3D加速相比还是很弱小。GDI+开始出现是在2001年,它引入了2D图形的反走样,浮点数坐标,渐变以及单个象素的Alpha支持,还支持多种图像格式。但是,GDI+没有任何的加速功能(全部是用软件实现)。
二、WPF新技术层出不穷
在WPF中,引入一种新的图形合成引擎。可以提供更高丰富的图形显式合成,而且不会有任何的窗口闪烁问题。这种新的显式提交引擎与传统的Win32、Windows Forms相比主要有两个优点:
1)所有的每个窗口元素都可以任意的交替重叠。
2)所有的合成操作都是Direct3D中的离屏表面(Off-screen Surface)中实现的。
WPF将最好的Windows的GUI技术整合在一起,以及用来描述UI布局的Web的使用拼接在一起。
       但是,在我们为之兴奋之前,请记住WPF本身还只是在1.0版本的技术。在成熟度和技术方面,你可以想象一下VB1.0版本。它是一种非常有意思的技术,在未来有很好的发展潜力,但是如果你现在就想用的话很可能会面对很多严重的问题。
       WPF使用一种基于XML的语言来定义用户界面从而完成上述的工作。这种语言被称为XAML,XML应用程序标记语言。XAML是WPF的声明性语言,提供对界面、文档以及多媒体等界面层逻辑的渲染。而且XAML可以直接在IE中打开。我认为,如果一定需要通过学习XAML来使用WPF的话那么这种技术就是失败的。通过这种测量我们知道,当前发布的WPF做的并不是很好。在Visual Studio的下一个版本将会内置XAML的支持,并且它们是以一种Blend表达式的方式支持的,一个为了创建更漂亮的界面的工具是一个能吸引住设计师的工具,但是任何工具在它们的1.0版本的时候都不够好,WPF1.0不够好的原因是因为它使得开发人员必须去学习XAML。
       Visual Studio“Orcas”为开发者对XAML的操作提供了一个环境,但是很多常用的操作必须通过手动操作XAML。Blend表达式使得界面布局和设计在没有手动输入XAML的情况下变得可能,但是应用概念例如数据绑定还是很可怕的。
       这并不令人觉得惊讶,XAML对Postscript和HTML都是相似的:它是工具使用的一种语言,而不是人类使用的语言。在Postscript的早期,很多用户必须学习这门语言并且手写Postscript程序来控制打印机。相似地,在书写基于Web的应用程序时,我们在编程的前几年需要学习HTML。需要开发人员来学习一些旁枝末节的东西来学习一种技术的,这是一种不成熟技术的体现,这是我们成为比较早的学习者必须付出的代价。
       我很期待我们将会看到WPF和它的工具在以后的几年能很快地成熟起来。从历史观点来说,3.0版本的任何技术,在主流采用变得很值得的情况下,成熟度达到了集成和非常值得关注的程度。从个人观点来说,我希望WPF跟上这个趋势,达到这个点,因为它是一种很酷的技术。
       如果你想是个追逐新技术的人,并且你想要花费时间和金钱在你可能要面临的问题上,WPF现在很值得你去探索。即使你对追逐新技术持保守态度,WPF也是一项你需要紧密关注的技术。它表示了Windows的界面编程的未来,并且还可能成为Web界面编程的未来。经过几年后,我们将会对没有WPF的日子觉得奇怪。

WPF会重写Windows GUI的历史吗?的更多相关文章

  1. 开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt

    首先,大家可以看下这个链接 Windows GUI自动化测试技术的比较和展望 . 这篇文章介绍了Windows中GUI自动化的三种技术:Windows API, MSAA - Microsoft Ac ...

  2. WPF程序在Windows 7下应用Windows 8主题

    这篇博客介绍如何在Windows 7下应用Windows 8的主题. 首先我们先看一个很常见的场景,同样的WPF程序(样式未重写)在不同的操作系统上展示会有些不同.这是为什么呢?WPF程序启动时会加载 ...

  3. Robot Framework + Pywinauto 框架实现Windows GUI Automation

    Robot Framework is a generic test automation framework for acceptance testing and acceptance test-dr ...

  4. 基于WPF的酷炫GUI窗口的实现全过程

    title: 基于WPF的酷炫GUI窗口的实现全过程 date: 2020-08-14 permalink: /build/wpfgui sidebarDepth: 2 tags: wpf gui 软 ...

  5. AutoIt操作Windows GUI实现文件上传

    AutoIt 一个使用类似BASIC脚本语言的免费软件,用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务. 官方网站: htt ...

  6. 用Nim语言开发windows GUI图形界面程序

    前言 本文得到了“樂師”的大力支持, 我们一起调试程序到深夜,要是没有他的帮忙, 我不知道要多久才能迈过这道坎, 另外“归心”还有其他人也提供了帮助, 他们都来自于QQ群:“Nim开发集中营”4693 ...

  7. Windows GUI代码与Windows消息问题调试利器

    Windows GUI代码与Windows消息问题调试利器 记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用.同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别,高 ...

  8. windows gui测试工具:AutoIt

    windows gui测试工具:AutoIt 2017-01-09 目录 1 简介2 示例1 记事本自动化操作3 示例2 上传文件 1 简介 返回 AutoIt v3 是用以编写并生成具有 BASIC ...

  9. A Windows GUI for Appium

    A Windows GUI for Appium If you are new to Appium then please see the Getting started guide for more ...

随机推荐

  1. 在octopress中gist tab不能正确的插入gist代码

    今天尝试用Octopress的gits tab插件来把gist插入到博客中,但是发现没有插入成功,调用rake generate报如下的错误: Gist replied with 404 for ht ...

  2. localstorage 初谈

    废话 : localStorage作为本地存储,比cookie大,可以看做一个小的服务器,几个api也可以看做增,删,查,找..... 设置 window.localStorage.setItem() ...

  3. C# richTextBox 重下往上依次查找关键字

    private void richTextBox1_SelectionChanged(object sender, EventArgs e) {     pos = richTextBox1.Sele ...

  4. Delphi 记事本 TMemo

    Windows记事本记事本     描述:     用Delphi模仿的Windows记事本 界面和功能都和Windows的记事本一样,是用Memo实现的而不是RichEdit 可以执行以下功能 文件 ...

  5. android 42 获取图片

    资源中获取图片:可以从工程assets文件夹.res/drawble文件夹.sd卡.服务端下载图片. 页面: <LinearLayout xmlns:android="http://s ...

  6. 关于MySQL的各种总结

    https://blog.atime.me/note/mysql-summary.html 总结使用MySQL过程中遇到的各种问题和一些有用的资源,配置等等.将之前的若干篇零散的文章汇总到一起,备忘. ...

  7. Qt 学习之路:模型-视图高级技术

    PathView PathView是 QtQuick 中最强大的视图,同时也是最复杂的.PathView允许创建一种更灵活的视图.在这种视图中,数据项并不是方方正正,而是可以沿着任意路径布局.沿着同一 ...

  8. Qt 学习之路:线程总结

    前面我们已经详细介绍过有关线程的一些值得注意的事项.现在我们开始对线程做一些总结. 有关线程,你可以做的是: 在QThread子类添加信号.这是绝对安全的,并且也是正确的(前面我们已经详细介绍过,发送 ...

  9. poj1066

    很好的一道题.题意是,一个正方形围墙内有一些交错的内墙,内墙的端点都在正方形上,在正方形内部有一个点,求从正方形外到这个点的最少要走的门数,门只能是线段的中点. 思路很巧妙,因为从一个点到终点不可能“ ...

  10. Entity Framework CodeFirst------使用CodeFirst方式建立数据库连接(一)

    本文分步演练介绍通过 Code First 开发建立新数据库.这个方案包括建立不存在的数据库(Code First 创建)或者空数据库(Code First 向它添加新表).借助 Code First ...