总的来说,微软在更新每个操作系统版本的时候,都尽量保持向前的兼容性。但是也有一些例外,如果一系列为提升性能所做的更新要兼顾之前版本就会影响整体性能时就无法一改而论了。举个例子,微软之前移除了对15位应用的兼容支持。
windows 8的客户端及服务器版本有很多更新将带来兼容性方面的巨大挑战。这些新挑战中的一部分没法由管理员来解决,它们只能由应用的初始开发者处理。
大多数变更在称为“windows和windows server开发者预览兼容手册”的更新文档中都有解释,它对大多数程序兼容性问题都有详细说明,对当前版本存在的问题提供了解决方案。
以下是几个已知的程序兼容性故障报告。
系统版本数字。是的,老问题又以新的面貌出现了。因为windows采用特殊的版本号,一些老的应用程序可能会因此出现问题,windows 8为自己定义的版本号是6.2。这些程序可以用当前windows提供的兼容模式来运行(例如,在程序快捷方式的兼容性页中),但是如果你是一个程序开发者,你就必须更加小心确认版本号码。微软建议小心使用‘检查版本信息’功能(用大于、不等于或者一个特殊的版本号)。
无头的服务器应用。这是最重要的几个变化之一,因为新版windows server(主要是server core)的设计不单运行无头程序,还要支持那些没有图形界面的程序。在性能较差的环境中图形界面可以卸载(例如,在资源被广泛分享的虚拟机中),或者出于其它原因,比如减少服务器被攻击可能性的考虑也可以进行类似操作。
一些服务器程序,尽管它们可能并不在无图形界面环境中运行。任何命令行版本应用理论上都应该运行得很好,但是一旦它被用图形界面呈现给用户之后就可能无法很好地运行了。现在没有很好的办法来解决这个图形界面引起的问题,所以它在大多数时候仅能保持无图形界面版本的应用。
如果你准备在server core版本操作系统上运行所有应用,那么你应当充分测试来确认它在无图形界面环境下能如期望般表现良好。如果结果相反,同时如果你对程序编写有一定了解,那么你需要将现有的代码迁移到server core平台下,并且重新确认那些WIN32 API和.NET CLR能被core系统所支持。
.NET框架。Windows 8将.NET 4.5框架放进它默认程序安装包中,但是并不包含.NET3.5。如果你有一些程序明确只支持3.5版本,不仅仅是独立的程序,还有那些基于该版本.NET的网站程序,这种情况下你需要手动地添加老版的.NET。幸运的是,这不会引起大的兼容性问题,因为不同版本的.NET可以并存独立运行。微软文档有一些说明,介绍了如何在不触动windows更新情况下手动地添加.NET 3.5框架。
本文来源:不详 作者:佚名