根據微軟表示,Windows Server 2003將終結一項讓Windows使用者與管理者頭痛的問題。「動態連結庫」(DLL/Dynamic Link Libraries)是一種可以讓不同應用程式共享的軟體模組,過去幾年以來一讓使用者相當頭大。
問題通常發生在所安裝的軟體使用的是更新版的動態連結庫(或DLL),而該DLL原本還有另一應用程式在使用時。如果原有的程式無法與更新版的DLL相容,使用者就會得到錯誤訊息。Windows及應用程式並不知道DLL版本號碼,因此問題發生時很難追查。
過去以來,有些元件之所以會以分享的方式處理,是因為磁碟空間及記憶體都相當寶貴,但過去幾年以來,硬碟及記憶體的價格都已大幅滑落,磁碟空間不再是昂貴的東西。然而,隨著應用程式越來越龐大且具有模組性(不久之前許多應用都完全自有獨立的.exe檔),因此分享DLL的問題尚未解決,問題也因此與日俱增。現在微軟希望在Windows Server 2003裡建立一種系統,來防止新應用程式所更新的DLL檔覆蓋掉舊版的同一個DLL,舊DLL可被原有的應用程式所用,藉此來終結所謂的「DLL煉獄」(DLL Hell)問題。
微軟的.Net與開發工具暨技術經理Ivo Salmre表示,這是個很傳統的問題。多年來微軟一直被這個問題叮得滿頭包。出貨的應用程式裡用的是原件A,另一個人也用原件A來撰寫應用程式,但安裝的是更新的版本,但卻因此破壞了原先的應用程式。
微軟的.Net 1.1是新版Windows Server 2003作業系統不可缺的一環,將支援微軟所謂的「硬性連結」(strong binding)。Salmre指出,硬性連結的意思是,應用程式或元件可以連結到另一元件的專有版本,所以你可以再使用元件,或者也可以獨立使用。
.Net 1.1將提供微軟所謂的GAC(全域組合快取/ Global Assembly Cache)給Windows Server 2003作業系統,這個快取是在某台電腦上全域分享的所有.Net元件的一個儲藏庫。當.Net元件安裝到電腦裡時,GAC就會看它的版本、公鑰,語言資訊,並為元件建立一個硬性的名稱。接著元件會被登錄到儲藏庫裡,並以它的硬性名稱來建立索引,因此,至少在理論上相同元件及DLL的不同版本之間就不會混淆不清了。