代码改变世界

微软企业库4.1学习笔记(九)企业库程序集的部署

2010-04-18 15:28  Virus-BeautyCode  阅读(2469)  评论(0编辑  收藏  举报

  企业库包含很多的程序集,除去Unity模块,企业库的每个程序集的名称都以“Microsoft.Practices.EnterpriseLibrary”开头。另外,其他的模块都可能会依赖企业库的Common程序集。使用一个模块的应用也可能会需要其他模块的程序集,例如使用Caching模块,有可能会需要Data Access模块的程序集。

  在应用中使用企业库,可以用下面的两种方式来部署企业库的程序集。

  •   在应用程序的目录中,作为应用的私有程序集。
  •   放在文件系统的共享目录,或者是GAC中。

  一、准备和版本

  如果编译企业库的源代码,默认生成的程序集是没有签名的。你就不能将他们放入GAC,你就不能享受签名程序集的好处。

  1.1使用XCopy

  你可以不使用签名,也不用将企业库的程序集部署到GAC中。你可以只将他们放在应用程序的目录中。对于这种简单的部署方式,你可以使用xcopy将应用的程序集和企业库的程序集一起安装在目标计算机。但是,如果在目标计算机上有多个应用都在使用企业库,你就会在每个应用的目录下存放一份企业库程序集的拷贝。

  1.2使用GAC ( Global Assembly Cache )

  另外,你可以对企业库程序集进行签名,这就保证他们的名字全局唯一,并且有了版本。如果这么做,你就可以在多个应用使用企业库的情况下,将他们部署在共享的位置。例如,可以将企业库部署在GAC中,这样计算机的任何应用都可以使用企业库程序集。

  可以使用下面的方式部署程序集到GAC中

  •   拖拽,打开C:\WINDOWS\assembly目录,直接将签名的程序集拖入C:\WINDOWS\assembly目录。
  •   使用GACUTILI.EXE,使用这个命令拷贝到C:\WINDOWS\assembly目录。
  •   使用.NET FRAMEWORK的配置工具mscorcfg.msc

  1.3版本

  程序集签名之后,就有了版本和命名保护,可以部署在GAC中,供所有的应用来使用。

  不推荐你在应用中直接使用企业库的命名空间,因为这样会造成和企业库的源码很难区分,建议你选择一个和你的项目相关的命名空间。

  二、升级企业库的程序集

  如果企业库提供了新的版本,你可以安装新版程序集。但是如果新版本对于特定的应用存在兼容性问题,你可以在GAC中安装新版本,并且配置一些应用使用GAC安装的新版本,其他存在兼容性的应用继续使用旧版本的企业库。

  2.1升级私有程序集

  如果企业库程序集作为一个应用的私有程序集来部署的话,你部署的时候只需要用新的dll代替旧版本的dll就可以了。

  注意:你应用在升级之前拷贝一份旧版本的企业库程序集,万一出现兼容性问题的话,可以用旧版本的再替换回来。

  2.2升级共享的程序集

  升级共享程序集的最简单办法就是用新的dll替换GAC中的旧dll。默认的,CLR会自动加载主要版本和次要版本相同,但是内部版本和修订版本是最新的程序集,作为应用程序使用。因此,如果主要版本和次要版本号没有变化,在GAC中添加最新的程序集,会自动被所有的应用使用。

  如果主要版本和次要版本有增加,或者是新版本对现有应用有兼容性问题,你可以修改默认的版本策略。在每个应用下面都以一个配置文件,在里面可以指定所使用的程序集的版本。在里面你可以指定没有兼容性问题的程序集使用新版本的企业库程序集。

  

  知识点:主要版本,次要版本,内部版本和修订版本

  .Net Framework 风格的版本号命名格式:主版本号.子版本号.编译版本号.修正版本号
    英文对照:     Major_Version_Number.Minor_Version_Number.Build_Number.Revision_Number

   Net Framework风格的版本号命名格式

      版本号由二至四个部分组成:主版本号、次版本号、内部版本号和修订号。主版本号和次版本号是必选的;内部版本号和修订号是可选的,但是如果定义了修订号部分,则内部版本号就是必选的。所有定义的部分都必须是大于或等于 0 的整数。
     应根据下面的约定使用这些部分:
     Major :具有相同名称但不同主版本号的程序集不可互换。例如,这适用于对产品的大量重写,这些重写使得无法实现向后兼容性。
     Minor :如果两个程序集的名称和主版本号相同,而次版本号不同,这指示显著增强,但照顾到了向后兼容性。例如,这适用于产品的修正版或完全向后兼容的新版本。
     Build :内部版本号的不同表示对相同源所作的重新编译。这适合于更改处理器、平台或编译器的情况。
     Revision :名称、主版本号和次版本号都相同但修订号不同的程序集应是完全可互换的。这适用于修复以前发布的程序集中的安全漏洞。
    程序集的只有内部版本号或修订号不同的后续版本被认为是先前版本的修补程序更新。

  

  三、部分信任的环境

  使用企业库3.0之前版本的应用要求有足够的权限,以便程序集可以在完全信任的情况下访问一些资源。最新版本的企业库,包括4.1你可以在部分信任的情况下使用企业库。

 

  未完待续。。。。。。。。。。。。。。。。。。。。。。。。