[Clr via C#读书笔记]Cp3共享程序集和强命名程
Cp3共享程序集和强命名程序集
私有方式部署+全局方式部署;弱命名程序集+强命名程序集
强命名程序集使用发布者的公钥私钥进行签名,唯一标识发布者。
共享dll被全部复制到System32中
强命名程序集标识特征:文件名,版本号,语言文化,公钥标志。
使用SN.exe工具生成密钥对并查看,在VS中也可以进行这个操作。
全局程序集缓存GAC,GACUtil.exe
尽量避免全局安装,使用私有部署。
安装 .net framework时,实际会安装Microsoft程序集文件的两套拷贝,一套安装在编译器/CLR目录下用于生成,一套安装在GAC子目录中方便运行的时候加载。
原来如此
如果强命名程序集是在GAC以外的地方被加载(需要设置基目录配置文件的codeBase元素),那么每次加载的时候都会进行hash对比,而GAC中的hash对比只在第一次安装的时候进行。
强命名程序集能够防止篡改
延迟签名,先开发,发布的时候再正式签名。
总之,大部分情况都是私有部署的弱命名程序集,强命名程序集有自己的好处,只是不到必须的时候尽量不要用。
CLR解析类型引用
同一个文件;不同的文件,同一个程序集;不同的文件,不同的程序集。
简单来说就是通过引用不停地找,找到需要的类型为止,找不到就抛出异常。
高级管理控制
xml配置文件
目标是更加灵活地指导CLR如何加载程序集。
[Clr via C#读书笔记]Cp3共享程序集和强命名程的更多相关文章
- 第一部分 CLR基础:第3章 共享程序集和强命名程序集
第一部分 CLR基础:第3章 共享程序集和强命名程序集
- CLR via C# 读书笔记---常量、字段、方法和参数
常量 常量是值从不变化的符号.定义常量符号时,它的值必须能在编译时确定.确定后,编译器将唱两只保存在程序集元数据中.使用const关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...
- Clr Via C#读书笔记---I/O限制的异步操作
widows如何执行I/O操作 构造调用一个FileStream对象打开一个磁盘文件-----FileStream.Read方法从文件中读取数据(此时线程从托管代码转为本地/用户模式代码)- ...
- Clr Via C#读书笔记---计算限制的异步操作
线程池基础 1,线程的创建和销毁是一个昂贵的操作,线程调度以及上下文切换耗费时间和内存资源. 2,线程池是一个线程集合,供应你的用程序使用. 3,每个CLR有一个自己的线程池,线程池由CLR控制的所有 ...
- Clr Via C#读书笔记---CLR寄宿和应用程序域
#1 CLR寄宿: 开发CLR时,Microsoft实际是将他实现成包含在一个dll中的COM服务器.Microsoft为CLR定义了一个标准的COM接口,并为该接口和COM服务器分配了GUID.安装 ...
- Clr Via C#读书笔记---程序集的加载和反射
#1 加载程序集 Assembly.Load: public class Assembly { public static Assembly Load(AssemblyName assemblyRef ...
- Clr Via C#读书笔记---垃圾回收机制
#1 垃圾回收平台的基本工作原理: 访问一个资源所需的具体步骤: 1)调用IL指令newobj,为代表资源的类型分配内存.在C#中使用new操作符,编译器就会自动生成该指令.2)初始化内存,设置资源的 ...
- Clr Via C#读书笔记---线程基础
趣闻:我是一个线程:http://kb.cnblogs.com/page/542462/ 进程与线程 进程:应用程序的一个实例使用的资源的集合.每个进程都被赋予了一个虚拟地址空间. 线程:对CPU进行 ...
- CLR via C# 读书笔记 6-2 不同AppDomain之间的通信 z
跨AppDomain通信有两种方式 1.Marshal By reference : 传递引用 2.Marshal By Value : 把需要传递的对象 通过序列化反序列化的方式传递过去(值拷贝) ...
随机推荐
- Python嵌套列表去重
raw_list = [ [ 'CS_SUPP_INFO', 'A', '1'], [ 'CS_SUPP_INFO', '1', 'A'], [ 'CS_SUPP_INFO', '1', 'A'], ...
- C# 类中的静态字段始终继承自基类
我们试想一下现在有一个类Parent,它有一个static的int类型字段number,然后如果类Parent有三个子类Child01.Child02和Child03,那么改变Parent.numbe ...
- sql中table用法
for c in (select column_value from table(f_split(V_FileID, ','))) loop --若没有填写资格开始结束时间,则填入 select co ...
- 【模板】RMQ(计算区间最值)
①一维RMQ (1) dp[i,j] 表示从第i个数起连续2j个数中的(最大值min.最小值max.最大公约数gcd……),通过更改下列代码中的红色函数即可实现. (2) b数组放置所需查询的数列. ...
- Python Monitoring UPS with SNMPWALK
##Background My co-worker told me he needed to monitor UPS with SNMP module but he only can get hexa ...
- 【saltstack 集中化管理】
Master(监控端): Minion(被监控端) 监控: /etc/master: #interface:监控端地址 #自动接受被监控端证书 #saltstack文件根目录位置 #启动监控 被监控: ...
- Vagrant 总结
引言 本文将讨论Vagrant基础应用,高级应用,基于Vagrant 的虚拟机优化,Vagrant的优势及区别等四部分 参考资料: [阿里云教程中心]Docker学习总结之Docker与Vag ...
- PHP中计算字符串相似度的函数代码
similar_text — 计算两个字符串的相似度 int similar_text ( string $first , string $second [, float &$percent ...
- Python学习3——变量如何存储数据
数值类型:包括整型.浮点型 变量名字代表的是存储地址. num01 = 100 print(id(num01)) #输出变量num01存储的内存地址,输出的是十进制值 num02 = num01 pr ...
- PAT A1127 ZigZagging on a Tree (30 分)
Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can ...