从Windows XP/Vista过渡到Windows 7,从应用程序角度讲至少要做到以下三个方面:
1、确保与Windows 7兼容
2、优化在Windows 7下的体验与性能
3、利用Windows 7提供的新特性
下边逐一来看:
1、确保应用程序与Windows 7兼容
在Vista发布之初,软件兼容性困扰了不少人,后期虽大有改善但留下的负面影响已经很难消除。幸运的是,Windows 7没有在内核级别上做大规模变动,所以如果你的软件在Windows Vista下运行正常(包括设备驱动程序),那几乎就可以放心换到新系统下了。按照微软的说法,这个概率基本能达到99%。
但如果你的程序是为Windows XP甚至Windows 2000设计的,在Vista下都存在问题,就不要指望能直接转向Windows 7了,必须进行更新,或者试试兼容模式。
需要特别指出的是,兼容性并不仅仅是操作系统的责任,更是软件自己的问题。总不能指望Windows 7去全面支持五六年前的老软件吧?所以在抱怨新系统兼容性之前,不妨先看看软件本身是不是该做些什么。
以下是软件兼容性问题最多的七个方面:
(1)、版本检查
目前为止的头号问题。有没有在Windows 7里运行软件的时候看到错误提示说“需要Windows XP或更高版本的操作系统”?如果是的话那你就碰伤版本检查问题了。
参考资料:
http://msdn.microsoft.com/en-us/library/bb756927.aspx
(2)、数据重定向
从Vista开始,标准用户对特定文件、文件夹、注册表键值的访问受到了限制。如果软件试图写入这些区域,就会被拒绝并重定向其它地方。大部分情况下,这个过程对用户和程序员来说都是透明的,但偶尔也会不透明,这时候问题就来了。
参考资料:
http://support.microsoft.com/kb/927387
(3)、IE保护模式
还是从Vista开始,IE默认运行在较低权限下,使得部分ActiveX控件无法再正常运行。Windows 7和IE8同样如此。
参考资料:
http://blogs.msdn.com/ie/archive/2006/02/09/528963.aspx
(4)、Session 0隔离
Vista下的系统服务运行在属于自己的Session 0级别里,与用户所在的Session 1或更高级别相隔离。这是操作系统的一种安全界线保护手段,可以避免很多针对系统底层的恶意攻击,只不过在安全性提高的同事,应用程序和系统服务之间的沟通也容易出问题,必须充分考虑。
参考资料:
http://blogs.msdn.com/cjacks/archive/2006/10/24/modifying-the-mandatory-integrity-level-for-a-securable-object-in-windows-vista.aspx
(5)、安装程序检测
从Vista开始,系统会自动检测某个应用程序是否需要安装,是的话就代表该程序要求提升为管理员权限,再加上新引入的UAC功能,软件安装就容易不太顺利了。
参考资料:
http://msdn.microsoft.com/en-us/library/aa905330.aspx
(6)、用户界面权限隔离
这可以阻止程序(进程)以较高权限向其它进程发送消息,即使它们运行在同一账户之下。这种安全保护手段同样既阻挡了恶意攻击,也会破坏一些程序的正常运行。
(7)、高DPI
Windows 7在安装过程中就会自动检测用户的显示器是否支持高DPI,是的话就自动启用。如果程序不支持高DPI,就可能会出现显示问题。
参考资料:
http://msdn.microsoft.com/en-us/library/dd756693(VS.85).aspx
#p#2、优化应用程序在Windows 7下的体验与性能
能够正常运行只是第一步,改善程序性能、优化用户体验就是锦上添花了,特别是要充分适应Windows 7的一些新变化。
(1)、超级任务栏
Windows 7的超级任务栏可以用更直接的方式为用户提供更多信息,比如弹出菜单(Jump List)就可以显示相关程序最常用的功能,这就需要软件的配合了。
参考资料:
http://windowsteamblog.com/blogs/developers/archive/2009/06/18/developing-for-the-windows-7-taskbar-application-id.aspx
(2)、库(Library)
作为访问用户数据的首要入口,库在Windows 7里是用户指定的特定内容集合,和文件夹管理方式是相互独立的,分散在硬盘上不同物理位置的数据可以逻辑地集合在一起,查看和使用都更方便。
参考资料:
http://windowsteamblog.com/blogs/developers/archive/2009/06/11/windows-7-programming-guide-libraries.aspx
(3)、触发式启动服务
Windows 7的任务控制管理器已经进行了拓展,在特定系统事件(触发)发生之后,系统服务可以自动开始或停止。这样一来,服务就无需开机自启动了,可以等到需要的时候再开始,从而大大节省系统资源并加快开机速度。
参考资料:
http://msdn.microsoft.com/en-us/library/dd405513(VS.85).aspx
(4)、电源管理优化
Windows 7提供了新的基础架构和工具,可以让开发人员轻松判断自己的程序对耗电或节能的影响,并有一系列的事件回调,让程序在系统运行于电池的时候降低活跃度,并在切换到AC供电后自动恢复。
(5)、故障排除平台
一直以来,Windows都会在出现问题的时候给用户提供一些解决方案供参考,但大多形同鸡肋,而Windows 7在这方面大大增强,使用基于PowerShell的机制来诊断、解决问题。Windows 7的故障排除平台和PC解决方案衷心无缝集成,让应用程序的故障诊断更统一、更简单。
参考资料:
http://msdn.microsoft.com/en-us/library/dd323778(VS.85).aspx
(6)、Windows错误报告(WER)
Windows错误报告是一系列技术,可以捕获软件崩溃数据,用于相关信息的实时反馈。通过Winqual服务,软件和硬件厂商可以访问这些报告,用来分析和解决问题,发布相关补丁或者进行软件升级。
参考资料:
http://www.microsoft.com/whdc/maintain/StartWER.mspx
(7)、I/O优化
I/O优先级可以在不明显消耗系统资源的情况下改善响应速度。如果程序没有进行I/O优化,可能会占用大量资源,给系统增加额外负担。
(8)、重启管理器
这种技术可以自动完成崩溃后重启,并在不重启整台机器的情况下完成程序和系统的更新。如果软件不幸崩溃,重启管理器就给了保存关键信息的二次机会,Windows会自动重新启动程序,并尝试载入之前保存的信息;系统完全重启的次数也会大大缩小,实在需要的话Windows也会在系统重启后尽量重启相关程序,并使之返回重启前的状态。
#p#3、利用Windows 7特性提供全新用户体验
完成之前两步后,应用程序已经可以很高效地在Windows 7上运行了,不过Windows 7还引入了大量新特性,使用得当的话可以进一步大大提升用户体验,也会让你的软件“高人一等”。
(1)、Ribbon用户界面
Office 2007引入的分栏式用户界面“Ribbon”在Windows 7里开始得以发扬光大,不少程序的界面都焕然一新。程序员自然也可以将其拿来为己所用,摆脱Win32 UI开发的繁复,用更简单、更高效的方式设计更丰富、更直观、更高性能的用户界面。
(2)、多点触摸
Windows 7最先为人所知的新特性就是对触摸和手势操作的改进支持,让用户得以摆脱鼠标点击、拖拽的束缚。新的多点触摸API支持平移、缩放、旋转等多种操作手势,并有直接视觉反馈,和底层内容的交互也更自然、更直观。
(3)、传感器与位置平台
Windows 7原生支持各种传感器,包括GPS导航仪、温度计、环境光传感器等等,并提供了新的开发平台,可以籍此创建能够感知周围环境的应用程序,特别是位置感应也为各种各样地图服务提供了新机遇。
(4)、新的图形堆栈
Windows 7通过一系列DirectX API将新的图形能力交给开发人员。Win32开发者可以利用GPU图形处理器的强大能力,在自己的程序里增加快速、高效、高质量的2D/3D图形、文字、图片。
(5)、媒体平台
Media Foundation和DirectShow是Windows系统媒体支持的基础。前者从Vista开始引入,目标就是取代古老的DirectShow,到了Windows 7里进一步增强,可以直接支持更多媒体格式,包括:
● MPEG-4
● 支持视频捕捉设备和硬件解码器,包括H.264、MJPEG、MP3
● 新的MP4、3GP、MPEG2-TS、AVI资源
● 新的MP4、3GP、MP3
(6)、Federated Search(联合搜索)
Windows 7将搜索的概念从本机扩展到了网络,基于OpenSearch项目和RSS格式。开发人员和IT专家无需便携和部署客户端代码就能让Windows 7搜索自己的搜索引擎、文件归档、Web程序和私有数据。搜索公司内部网和Web网络将像搜索本机一样简便,且都在同样的Windows界面里完成。
(7)、Device Stage
主要针对收集、便携式媒体播放器(PMP)、相机、打印机等外围设备,并与软件和服务紧密集成,可以在Windows桌面上直接使用这些设备。
【编辑推荐】