以前,由于硬盘和内存比较昂贵,组件在计算机都会被不同的软件共享。在过去的数年中,硬盘和内存的价格已经大幅度下降,硬盘空间已经不再是一个需要优先考虑的问题,但是,随着应用软件大小和模块化程度不断增加,DLL共享问题并没有得到解决。但是,通过在Windows Server 2003中引入一种能够阻止新应用软件安装的DLL覆盖仍然在被现有的应用软件使用的DLL文件的系统,微软公司希望这一被称作“DLL恶梦”的问题能够得到解决。
微软公司负责.Net和开发者工具的经理萨米尔表示,这一个经典问题,这一问题困扰我们已经好多年了。我们发布的应用软件需要用到组件A,其它人发布的应用软件则使用了新版组件A,这就可能给我们的应用软件带来问题。他说,集成在Windows Server 2003中的Microsoft .Net 1.1将支持所谓的强绑定。强绑定意味着一个应用软件或组件能够绑定到另一个组件的特定版本,使用户能够重复使用组件或独立地使用它们。
.Net 1.1将向Windows Server 2003操作系统提供微软稳定之为“Global Assembly Cache”的技术,这是一台计算机上共享的所有.Net组件的仓库。萨米尔表示,当在一台计算机上安装一个组件时,Global Assembly Cache会检查其版本、公共密钥、语言信息,并为该组件创建一个强名字。然后,该组件会在Global Assembly Cache中注册,并根据其强名字进行索引,因此至少从理论上讲,不同版本的组件(DLL文件间)不会再发生混淆。
Windows 2003 Server还将使用规则确保应用软件能够找到正确的组件。系统会首先查找本地版组件,然后在Global Assembly Cache进行查找,找到与所需求组件的强名字精确匹配的组件。如果不能成功,系统将使用启发式策略搜索次好的组件。但一般情况下,应用软件总是能够找到最适合自己的组件。另外,在特殊情况下,系统管理员也能够暂覆盖这些规则。
Windows Server 2003中的另一项功能是.Net组件将不再有注册策略。萨米尔说,这意味着一台服务器上的组件可以被方便地拷贝到另一台服务器上。微软公司将这一功能称为“xcopy”,这也意味着用户能够拷贝而无需重新安装应用软件。