根据微软表示,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的不同版本之间就不会混淆不清了。