程序集是一个抽象的概念
物理上:程序集是一个或多个模块/资源文件的逻辑性分组.(程序集是一个或多个类型定义文件及资源文件的集合。)
作用上:程序集是重用、安全性以及版本控制的最小单元。在CLR的世界中,程序集相当于一个“组件”。CLR操作的是程序集,换言之,CLR总是首先加载包含“清单”元数据的文件。
在生成托管模块(由面向CLR的编译器生成的各种编译后文件,如exe(target:exe),dll(target:library),.netmoudle(tartget:moudle)文件,这些就是托管模块)时,如果指定的生成目标位exe,winexe,libarry,这些生成的目标文件是包含有清单元数据的,否则该模块文件不包含清单元数据。
程序集的分类:
物理上:可以分为多文件和单文件程序集。
唯一性上:可以分为强命名程序集(能被唯一确认的程序集)和非强命名程序集(也叫弱命名程序集)。
对程序集进行部署时可以有两种方式:私有部署的程序集(可以是强命名程序集,也可以是弱命名程序集)和非私有部署的程序集(只能是强命名程序集)
强命名程序集:能被唯一确认的程序集,有多种实现方法来实现,而在CLR中应用公钥/秘钥对进行实现。
若命名程序集:不带有公钥和密钥对的程序,不保证自身的唯一性。
应用程序域:
操作系统和运行时环境通常会在应用程序间提供某种形式的隔离。例如,Windows 使用进程来隔离应用程序。为确保在一个应用程序中运行的代码不会对其他不相关的应用程序产生不良影响,这种隔离是必需的。
应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行时宿主创建,运行时宿主负责在运行应用程序之前引导公共语言运行时。
详情参见MSDN
|