Windows已经有22年的历史,这22年来,微软官方主力推行的编程语言与API有四个分水岭:
1985~1991年:C搭配Windows API。目前我们已很少用C和Windows API写程序了,但还是有必要熟悉这样的技术,因为有些特殊的时候会用到。
1992~2001年:C++搭配MFC链接库(这段时间也是Visual Basic最风光的时候)。在历史上MFC是最多人用的Windows编程方法。但MFC技术终于该淡出历史了!
2002~2006年:C#搭配Windows Form。这段期间IT技术的焦点是在Web上,所以虽然大家都在用.NET,但真正的主角是ASP.NET,而不是Windows Forms。Windows Forms还没等熬出头,WPF就出现了。Windows Forms注定会是历史中“最少人使用的微软开发技术”。Windows Forms其实是不错的技术,但好技术(Windows Forms)的下场是没人用,差技术(MFC)的下场是大家都在用。我只能说,Windows Forms生不逢时。
2007~今 :C#搭配WPF。你可能觉得很奇怪,微软为何释出两个作用相似,却不同且不相容的.NET API。因为时代的改进,用户对视觉感受需求不断提高。因为WPF支持硬件加速、精确颜色、浮点坐标、动画实现、三维、视频感受等要求提高。而Winform GDI+是旧版本留下的吧!
版本更新了,下面主要讨论 Windows Presentation Foundation (WPF) 3.0 版和 3.5 版之间的主要区别。
 与 3.0 版的兼容性
向前兼容性和向后兼容性
使用 WPF 3.0 生成的应用程序可以在 WPF 3.5 运行库中运行。
如果使用 WPF 3.5 生成的应用程序只使用 WPF 3.0 中提供的功能,则该应用程序可以在 3.0 运行库上执行。
WPF 3.5 定义了一个新的 XML 命名空间 http://schemas.microsoft.com/netfx/2007/xaml/presentation。在使用 WPF 3.5 生成应用程序时,可以使用此命名空间或在 WPF 3.0 中定义的命名空间。
以特定的运行库为目标
 应用程序
应用程序模型已得到下列改进:
-
提供全面的外接程序支持,可以支持独立应用程序和 XAML 浏览器应用程序 (XBAP) 中的非可视化和可视化外接程序。
-
XBAP 现在可在 Firefox 中运行。
-
可以在 XBAP 与同一源站点中的 Web 应用程序之间共享 Cookie。
-
为提高工作效率而改进的 XAML IntelliSense 体验。
-
更广泛的本地化支持。
WPF 中的可视化和非可视化外接程序
可扩展的应用程序可以公开它的功能,从而允许其他应用程序与该应用程序集成并扩展其功能。外接程序是应用程序公开其扩展性的一种常见方式。在 .NET Framework 中,外接程序通常是作为动态链接库 (.dll) 打包的程序集。外接程序由宿主应用程序在运行时动态加载,以便使用和扩展由宿主公开的服务。宿主和外接程序通过已知协定进行交互,该协定通常是由宿主应用程序发布的公共接口。
只要某个应用程序支持外接程序,第一方和第三方开发人员就可以为该应用程序创建外接程序。很多应用程序都属于这种类型,包括 Office、Visual Studio 和 Microsoft Windows Media Player。例如,对 Microsoft Windows Media Player 的外接程序支持允许第三方创建 DVD 解码器和 MP3 编码器。
.NET Framework 实现的构造块可使应用程序支持外接程序。然而,考虑到健全的外接程序设计需要处理以下几个方面,构建这种支持可能十分复杂并要花费大量的时间:
-
发现:查找遵循宿主应用程序所支持的协定的外接程序。
-
激活:加载、运行外接程序并与之建立通信。
-
隔离:使用应用程序域或进程建立隔离边界,避免外接程序的潜在安全问题和执行问题对应用程序造成影响。
-
通信:通过调用方法和传递数据,允许外接程序和宿主应用程序跨过隔离边界相互通信。
-
生存期管理:以可预测的干净方式加载和卸载应用程序域和进程(请参见应用程序域概述)。
-
版本管理:确保在创建宿主应用程序或外接程序的新版本后,它们仍可进行通信。
您不需要自己解决这些问题,现在 .NET Framework 在 System.AddIn 命名空间中提供一组类型,这组类型统称为“外接程序模型”。.NET Framework 外接程序模型针对以上所列每个常见外接程序行为提供了功能。
不过,在某些情况下可能也需要允许外接程序与宿主应用程序 UI 集成并扩展其功能。WPF 为实现这种支持扩展了 .NET Framework 外接程序模型,这种扩展是通过在宿主应用程序的 UI 中显示外接程序所拥有的 FrameworkElement 而实现的。这就使 WPF 开发人员能够创建应用程序以支持以下常见方案:
独立应用程序和 XBAP 都可以承载的 WPF 外接程序。
有关更多信息,请参见 Windows Presentation Foundation 外接程序概述。
对 XBAP 的 Firefox 支持
WPF 3.5 的一个插件使得 XBAP 能够从 Firefox 2.0 中运行,WPF 3.0 中没有这个功能。其中的重要功能包括:
Cookie
独立 WPF 应用程序和 XBAP 可以创建、获取和删除会话和持久性 Cookie。在 WPF 3.5 中,可以在 XBAP、Web 服务器和同一源站点中的 HTML 文件之间共享持久性 Cookie。
有关 Cookie 的更多信息,请参见导航概述。
Visual Studio IntelliSense 增强功能
现在可以使用 Visual Studio XAML 编辑器添加新的 XAML 元素,使用 Name 属性为该元素指定名称,从代码隐藏文件中引用该元素,并从 IntelliSense 资源管理器中查看该元素的成员。
本地化
对 TextBox 的输入法编辑器 (IME) 支持
 图形
现在,您可以将通过 HTTP 下载的图像缓存到本地 Microsoft Internet Explorer 临时文件缓存中,这样,对该图像的后续请求将来自本地磁盘而非 Internet。根据图像大小的不同,这一功能可以显著改善网络性能。为支持此功能,添加了下面的成员:
添加了 BitmapSource..::.DecodeFailed 事件,用以在图像由于文件头损坏而加载失败时向用户发出通知。
 三维图形
三维对象模型中添加了下列新功能。
三维对象模型中的输入、焦点和事件支持
三维对象上的交互式二维内容
新的转换服务
 数据绑定
数据绑定已得到下列改进:
新的调试机制
对 IDataErrorInfo 的支持
数据验证的另一种语法
LINQ 和 XLINQ 支持
 控件
RichTextBox
TextBoxBase
SoundPlayerAction
受保护的 Set 访问器
下列属性的 set 访问器现在受到保护,而不是内部访问器:
 文档
 批注
|