总的来说,微软在更新每个操作系统版本的时候,都尽量保持向前的兼容性。但是也有一些例外,如果一系列为提升性能所做的更新要兼顾之前版本就会影响整体性能时就无法一改而论了。举个例子,微软之前移除了对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框架。
因为.NET4.5已经是windows run time(WinRT)的一部分,Word允许开发者用“metro“视图创建应用,并可用沙漏程序模型迅速创建程序。如果你想要为windows 8更改或者升级服务器应用,并且你已经了解C#或者C++,那么这个任务并不困难,但是文档中还是有一些值得探索的东西。
4K磁盘扇区。这个说来更像是一个硬件问题,而不是程序问题,但是它仍然值得我们注意。目前市场上主流的新磁盘一般使用4K扇区替代旧的512字节扇区设计。4K扇区驱动器,也就是所谓“高级格式”磁盘,在为512字节扇区设计的程序上经常会出现一些奇怪的问题。它没有很好地考虑向前兼容的问题。Windows 8增加了一个新的API,用来查询文件扇区大小,然后用命令行工具支持脚本查询卷大小。
没有签名的内核驱动。如果你有一些程序,不管是第三方的或者是厂商自带的,使用到内核驱动,windows server出于安全考虑严格限制对内核驱动的使用,并将其视为流氓软件。对设备使用内核驱动最大的变化包括标准扩展固件接口(UEFI)安全启动功能,它用于保护机器免受流氓软件攻击。UEFI安全启动是服务器的可选项,不过建议启用它。如果你想在服务器上使用UEFI安全启动项,你最好用可信任的证书来为内核驱动做验证。否则,建议禁用安全启动项。
【编辑推荐】