3.7 私有部署强命名程序集
2011-12-06 10:40 iRead 阅读(329) 评论(0) 编辑 收藏 举报在GAC中安装程序集具有几个方面的优势。GAC使程序集能被多个应用程序共享,从而减少了总体的物理内存占用。除此之外,很容易将程序集的一个新版本部署到GAC中,并让所有应用程序都通过一个发布者策略(本章稍后讲述)来使用这个新版本。GAC还实现了对程序集的多个版本的并行管理。然而,GAC通过会受到严密保护,只有管理员才能在其中安装程序集。此外,一旦向GAC中安装,就会违反“简单复制式部署”这一宗旨。
虽然强命名程序集能安装到GAC中,但这一点绝非强求。事实上,只有在程序集要由多个应用程序共享的时候,才应该将程序集部署到GAC中。如果程序集不需要共享,就应该以私有方式部署它。私有部署维护了“简单的复制式部署”这一宗旨,而且能更好地隔离应用程序及其程序集。另外,不要将GAC想象成一个新的C:\Windows\System32垃圾堆积场。这是因为新版本的程序集不会相互覆盖,它们是并行安装的,每个安装都会消耗磁盘空间。
强命名程序集除了部署到GAC,或者以私有方式部署之外,还可部署到只有少数应用程序才知道的某个目录。例如,假定要生成3个应用程序,所有引用程序都共享一个强命名程序集。安装时可以创建3个目录,每个目录都放一个应用程序。除此之外,在创建第4个目录,专门用于存储想要共享的程序集。将每个应用程序安装到它的目录时,都同时安装一个XML配置文件,并用共享程序集的codeBase原书指出共享程序集的路径。这样在运行时,CLR就知道跑去那里查找共享程序集。但要注意,这个技术很少使用,也不太推荐使用,因为没有任何一个应用程序能决定在什么时候卸载程序集的文件。
注意:配置文件的codeBase元素实际标记了一个URL。这个URL可引用用户机器上的任何目录,也可引用一个Web地址。如果引用的是Web地址,CLR会自动下载文件,并把它存储到用户的下载缓存中(%UserProfile%\Local Settings\Application Data\Assembly下的一个子目录)。将来进行引用时,CLR会将已下载的文件的时间戳与指定URL处的文件的时间戳进行对比。如果URL处的文件具有较新的时间戳,CLR会下载新版本文件并加载它。否则,CLR会加载现有的文件,不再重复下载(从而增强性能)。本章稍后会展示包含codeBase元素的一个示例配置文件。