程序集,应用程序域,强签名程序集,GAC

程序集:程序集是一个或多个模块和资源文件的集合。当一个程序集被打包形成时,它不仅包含了所有原始文件的内容,也会添加一个程序集清单,该清单包含版本号,语言,发布者等信息。程序集是一个逻辑上的概念,而不是指一个或几个物理文件或这代码段。
程序集的引入的优点:

1)程序集支持多变程语言的开发,就是一个程序集语言定义和实现的模块。在程序集被编译形成时,所有这些类型已经被编译成中间代码,而不再带有原来编程语言的特性。

2)程序集允许逻辑分布和物理分布。这样虽然同属于一个逻辑程序集,各种类型和资源仍然可以分布在不同的物理文件里。这大大提高了系统的部署和灵活性。

程序集是一个由类型定义,数据文件和资源文件组成的逻辑概念。每个程序集都包含一个程序集清单,该清单通常被附加在某个文件头上,也可以设置单独建立一个文件来包含该清单。

 

应用程序域:在操作系统中,一个普通的应用程序通常占据一个操作系统的进程。操作系统的进程为应用程序提供了独立的内存空间,规定了代码的执行的范围,并提供了错误隔离机制。在.NET框架中,应用程序域(APPDomain)提供了和操作系统进程非常类似的功能。一个在CLR中运行的应用程序域,将至少拥有一个应用程序域。和操作系统的进程相同,应用程序域提供了代码的执行范围,并且为程序提供隔离。在多个应用程序域间通信是非常困难的。每个类型都会存放在一个应用程序域,并且,所有域内的引用必须引用自己所在应用程序与域的对象。和操作系统的进程不同的是,应用程序域的创建和销毁所需要的开销会相对较小。当然CLR仍然在操作系统上运行,所以某个应用程序域必定运行在某个操作系统进程内,在CLR的安排下,每个操作系统的进程也可以包含多个应用程序域。

应用程序域是CLR中提供代码运行范围,错误隔离和安全设置隔离的逻辑单元,功能类似于操作系统进程。一个或多个应用程序域在一个操作系统进程中运行。应用程序域的创建和销毁所需的开销,相对于系统进程较小。但和操作系统一样,应用程序域之间的数据共享相当困难

 

强签名程序集是一个带有公钥和数字签名的程序集,每个签名都可以有四个元素来唯一标识,他们分别是:文件名,版本号,语言文化,公钥。这些信息都被包含在程序集的清单之中。相对于强签名程序,弱签名程序集拥有完全一样的元数据,CLR文件头和程序集清单,唯一不同的是弱签名程序集没有公钥,也不必数字签名。弱签名程序集不能被放入全局程序集缓存(GAC)中,只能进行私有部署。
GAC:全剧程序缓存(Global Assembly Cache)。被放入GAC的程序集。无论在何处被其他程序集引用,都可以保证自己能够被CLR找到并且加载,GAC就是一个有规范的目录结构

GAC有如下优点:

1)程序集被多处引用时,可以有效减少内存版本

2)通过发布者策略可以有效地发布程序集的最新版本

3)同一程序集的多个版本可以共存,并且可以通过配置进行切换
并不是所有的程序集都能够放入GAC中,只有带公钥的强签名程序集才能被部署到GAC中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值