zoukankan      html  css  js  c++  java
  • 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 ⊙ )!  看的稀里糊涂..不知道看的是什么东东...

  • 相关阅读:
    React Native组件左右两端展示(flex:1、justifyContent:'space-between')
    iOS 蓝牙开发详解(基本知识、相关类图、交互流程)
    iOS 蓝牙开发 Mac地址问题
    AFNetwork监听网络失效
    查看linux系统版本和cpu
    docker常用命令
    docker 常用命令--镜像删除
    docker部署nginx
    常见数据库会话查询脚本
    DB性能瓶颈分析思路
  • 原文地址:https://www.cnblogs.com/ry123/p/2789887.html
Copyright © 2011-2022 走看看