總的來(lái)說(shuō),微軟在更新每個(gè)操作系統(tǒng)版本的時(shí)候,都盡量保持向前的兼容性。但是也有一些例外,如果一系列為提升性能所做的更新要兼顧之前版本就會(huì)影響整體性能時(shí)就無(wú)法一改而論了。舉個(gè)例子,微軟之前移除了對(duì)15位應(yīng)用的兼容支持。
windows 8的客戶(hù)端及服務(wù)器版本有很多更新將帶來(lái)兼容性方面的巨大挑戰(zhàn)。這些新挑戰(zhàn)中的一部分沒(méi)法由管理員來(lái)解決,它們只能由應(yīng)用的初始開(kāi)發(fā)者處理。
大多數(shù)變更在稱(chēng)為“windows和windows server開(kāi)發(fā)者預(yù)覽兼容手冊(cè)”的更新文檔中都有解釋?zhuān)鼘?duì)大多數(shù)程序兼容性問(wèn)題都有詳細(xì)說(shuō)明,對(duì)當(dāng)前版本存在的問(wèn)題提供了解決方案。
以下是幾個(gè)已知的程序兼容性故障報(bào)告。
系統(tǒng)版本數(shù)字。是的,老問(wèn)題又以新的面貌出現(xiàn)了。因?yàn)閣indows采用特殊的版本號(hào),一些老的應(yīng)用程序可能會(huì)因此出現(xiàn)問(wèn)題,windows 8為自己定義的版本號(hào)是6.2。這些程序可以用當(dāng)前windows提供的兼容模式來(lái)運(yùn)行(例如,在程序快捷方式的兼容性頁(yè)中),但是如果你是一個(gè)程序開(kāi)發(fā)者,你就必須更加小心確認(rèn)版本號(hào)碼。微軟建議小心使用‘檢查版本信息’功能(用大于、不等于或者一個(gè)特殊的版本號(hào))。
無(wú)頭的服務(wù)器應(yīng)用。這是最重要的幾個(gè)變化之一,因?yàn)樾掳鎤indows server(主要是server core)的設(shè)計(jì)不單運(yùn)行無(wú)頭程序,還要支持那些沒(méi)有圖形界面的程序。在性能較差的環(huán)境中圖形界面可以卸載(例如,在資源被廣泛分享的虛擬機(jī)中),或者出于其它原因,比如減少服務(wù)器被攻擊可能性的考慮也可以進(jìn)行類(lèi)似操作。
一些服務(wù)器程序,盡管它們可能并不在無(wú)圖形界面環(huán)境中運(yùn)行。任何命令行版本應(yīng)用理論上都應(yīng)該運(yùn)行得很好,但是一旦它被用圖形界面呈現(xiàn)給用戶(hù)之后就可能無(wú)法很好地運(yùn)行了。現(xiàn)在沒(méi)有很好的辦法來(lái)解決這個(gè)圖形界面引起的問(wèn)題,所以它在大多數(shù)時(shí)候僅能保持無(wú)圖形界面版本的應(yīng)用。
如果你準(zhǔn)備在server core版本操作系統(tǒng)上運(yùn)行所有應(yīng)用,那么你應(yīng)當(dāng)充分測(cè)試來(lái)確認(rèn)它在無(wú)圖形界面環(huán)境下能如期望般表現(xiàn)良好。如果結(jié)果相反,同時(shí)如果你對(duì)程序編寫(xiě)有一定了解,那么你需要將現(xiàn)有的代碼遷移到server core平臺(tái)下,并且重新確認(rèn)那些WIN32 API和.NET CLR能被core系統(tǒng)所支持。
.NET框架。Windows 8將.NET 4.5框架放進(jìn)它默認(rèn)程序安裝包中,但是并不包含.NET3.5。如果你有一些程序明確只支持3.5版本,不僅僅是獨(dú)立的程序,還有那些基于該版本.NET的網(wǎng)站程序,這種情況下你需要手動(dòng)地添加老版的.NET。幸運(yùn)的是,這不會(huì)引起大的兼容性問(wèn)題,因?yàn)椴煌姹镜?NET可以并存獨(dú)立運(yùn)行。微軟文檔有一些說(shuō)明,介紹了如何在不觸動(dòng)windows更新情況下手動(dòng)地添加.NET 3.5框架。
因?yàn)?NET4.5已經(jīng)是windows run time(WinRT)的一部分,Word允許開(kāi)發(fā)者用“metro“視圖創(chuàng)建應(yīng)用,并可用沙漏程序模型迅速創(chuàng)建程序。如果你想要為windows 8更改或者升級(jí)服務(wù)器應(yīng)用,并且你已經(jīng)了解C#或者C++,那么這個(gè)任務(wù)并不困難,但是文檔中還是有一些值得探索的東西。
4K磁盤(pán)扇區(qū)。這個(gè)說(shuō)來(lái)更像是一個(gè)硬件問(wèn)題,而不是程序問(wèn)題,但是它仍然值得我們注意。目前市場(chǎng)上主流的新磁盤(pán)一般使用4K扇區(qū)替代舊的512字節(jié)扇區(qū)設(shè)計(jì)。4K扇區(qū)驅(qū)動(dòng)器,也就是所謂“高級(jí)格式”磁盤(pán),在為512字節(jié)扇區(qū)設(shè)計(jì)的程序上經(jīng)常會(huì)出現(xiàn)一些奇怪的問(wèn)題。它沒(méi)有很好地考慮向前兼容的問(wèn)題。Windows 8增加了一個(gè)新的API,用來(lái)查詢(xún)文件扇區(qū)大小,然后用命令行工具支持腳本查詢(xún)卷大小。
沒(méi)有簽名的內(nèi)核驅(qū)動(dòng)。如果你有一些程序,不管是第三方的或者是廠商自帶的,使用到內(nèi)核驅(qū)動(dòng),windows server出于安全考慮嚴(yán)格限制對(duì)內(nèi)核驅(qū)動(dòng)的使用,并將其視為流氓軟件。對(duì)設(shè)備使用內(nèi)核驅(qū)動(dòng)最大的變化包括標(biāo)準(zhǔn)擴(kuò)展固件接口(UEFI)安全啟動(dòng)功能,它用于保護(hù)機(jī)器免受流氓軟件攻擊。UEFI安全啟動(dòng)是服務(wù)器的可選項(xiàng),不過(guò)建議啟用它。如果你想在服務(wù)器上使用UEFI安全啟動(dòng)項(xiàng),你最好用可信任的證書(shū)來(lái)為內(nèi)核驅(qū)動(dòng)做驗(yàn)證。否則,建議禁用安全啟動(dòng)項(xiàng)。