CLR读书笔记--第三章 共享程序集和强命名程序集

3.1 两种程序集 两种部署

1. CLR支持两种程序集: 弱命名程序集和强命名程序集;

  两者的区别: 强命名的程序集使用一对发布者的公钥/私钥对进行了签名.它唯一的标识了程序集的发布者;

  弱命名的程序集只能以私有的方式部署,强命名的程序集可以全局部署;

3.2 为程序集分配强命名

  1. 一个强命名的程序集包括4部分重要属性用来对程序集进行唯一标识:

    @1 一个文件名(不含扩展名); @2 一个版本号; @3 一个语言文化标识;@4 一个公钥;

  2. ms使用标准的公钥/私钥加密技术,这样保证了程序集的唯一性;

  3. 创建强命名程序集的步骤:

    第一步: 使用Strong Name(SN.exe)来获取一个密钥;

    第二步: 将原有程序集升级为强命名程序集;

3.3 全局程序集缓存

  1. 全局程序集缓存GAC: 一个程序集要由多个应用程序访问,必须把它放到一个已知的目录中,--这个已知的位置就是GAC(Global Assembly Cache);

  2. GAC目录是结构化的,应使用工具(GACUtil.exe)将程序集放到GAC中,不能将一个弱命名的程序集放到GAC中;

  3. GAC中注册程序集的目的: 防止同名程序集覆盖;

3.4 在生成的程序集中引用一个强命名程序集

  1. 对于不完整的路径,CSC.exe会尝试在以下目录中寻找程序集:

    @1 工作目录;

    @2 包含CSC.exe本身的目录;

    @3 使用/lib编译器开关指定的目录;

    @4 使用LIB环境变量的目录;

  2. 安装..NET Framework时会安装两套程序集文件:

    一套安装在编译器/CLR目录; 一套安装到一个GAC子目录;

3.5 强命名程序集能防篡改

  1. 在安装强命名程序集到GAC时,系统会对包含清单的那个文件内容进行哈希处理,并将哈希值与PE文件中嵌入的RSA数字签名比较,如果一致就表明没有被篡改,系统还

    会对其他文件进行哈希处理,有一个不一致就表明被篡改了

  2. 强命名程序集如果安装在GAC之外,CLR在加载时会比较哈希值.

 

( ⊙ o ⊙ )!  看的稀里糊涂..不知道看的是什么东东...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2012-11-26 22:30  RY一步一个脚印  阅读(204)  评论(0编辑  收藏  举报