原文地址: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. hdu1043Eight (经典的八数码)(康托展开+BFS)

    建议先学会用康托展开:http://blog.csdn.net/u010372095/article/details/9904497 Problem Description The 15-puzzle ...

  2. Raspberry Pi + 3个USB摄像头 + Motion(简易监控设备配置记录1——介绍以及安装) 分类: Raspberry Pi 服务器搭建 2015-04-12 19:21 226人阅读 评论(0) 收藏

    参考: Debian官网链接 Motion官网链接 首先,参见Debian官网链接对Motion的介绍,网页中包含了所有相关依赖包,请首先确保这些依赖包的安装. Motion介绍 摘出对Motion的 ...

  3. mysql 时区 , 夏令时,冬令时

    mysql默认时区: mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_nam ...

  4. 走进 Facebook POP 的世界

    POP: 一个流行的可扩展的动画引擎iOS,它支持spring和衰变动态动画,使其可用于构建现实,基于物理交互.Objective - C API允许快速集成, 对于所有的动画和过渡他是成熟的. 解释 ...

  5. Java中泛型 问号的作用

    这是jdk1.5泛型的典型应用: 第一种写法,叫做使用泛型方法:    public <T extends Object> void thisIsT(List <T> list ...

  6. Linux 目录与文件的基本操作

    1 目录与文件 1.1 文件 硬盘中的数据在操作系统中的体现为文件. 1.2 目录 目录的概念不是文件集合.目录和文件一样,目录也是文件.目录是找到文件的“踏板”.目录的本质是路径映射. 1.3 Li ...

  7. 'Service' object has no attribute 'process'

    在使用selenium+phantomjs时,运行总是出现错误信息: 'Service' object has no attribute 'process' 出现该错误的原因是未能找到可执行程序&qu ...

  8. My-sql #1045 - Access denied for user 'root'@'localhost' (using password: NO)

    当你重装数据库后出现这个问题的时候,不要着急,首先你要去你的确定你的数据库已经成功的把服务开启了, 然后确定你的密码和账户,IP都确认的情况下, 去寻找config.inc.php 这个文件,根据配置 ...

  9. c# 为什么要用 get set 属性

    1 可以对赋值 做验证 ,范伟限制,额外的限制 2 可以设置 只读 只写 3 可以做线程同步 4 可以将属性设置在interface接口中 5 可以使用虚属性 或 抽象属性 可以填补 没有 虚字段 抽 ...

  10. C#入门经典(第五版)学习笔记(三)

    ---------------面向对象编程简介--------------- UML表示方法: 1)方框上中下三分 2)上框写类名 3)中框写属性和字段,例如:+Description:string  ...