㈠ .NET 解释术语:CLR、FCL、IL、Assembly(程序集) 简述.NET Framework的架构及各模块主要功能
CLR常用简写词语,CLR是公共语言运行时,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。
.net框架中包括有一组.net框架类库(Framework Class Library,简称FCL)程序集,其中含 有几千个类型的定义,每个类型都提供了某种功能。
IL又称为(interpretative language 解释语言),我们.NET开发人员必定离不开IL,就算您没有学习,也一定可以在各处看到它的身影。而且IL也是.NET唯一懂得的语言,我们每天其实都在使用着ILIL是中间层语言
上层代码编译完成后都要转换为中间语言供CLR使用
IL为Intermediate Language
有时候也叫Microsoft Intermediate Language
中间语言使得在.Net中各种语言的方便交互成为了可能。
assembly, 这里把它翻译为配件, 以示和组件(Component)加以区别.
一个配件有时候是指一个EXE或者DLL文件, 实际上是一个应用程序(就是指带有主程序
入口点的模块)或者一个库文件. 但是配件实际上可以是由一个或者多个文件组成
(dlls, exes, html等等), 代表一组资源, 以及类型的定义和实现的集合. 一个配件也可
以包含对其它配件的引用. 所有这些资源、类型和引用都在一个列表(manifest)中描述?nbsp;
U飧鳇anifest也是配件的一部分,所以配件是一个自我描述的,不需要其它附加的部件
对其描述!配件的另一个重要特性是,它是.Net环境下类型标识的一部分,也可以说
是基本单位。因为,区分一个类型的标识就是包含这个类型的配件名字加上类型名本身。
举个例子,配件A定义了类型T, 配件B也定义了同名类型T,但是.Net把这两个类型认为是
不同的类型。 注意,不要把配件(assembly)和名字空间(namespace)混淆起来。其实
名字空间仅仅是用来把类型名用树的形式组织起来的手段。对于运行是环境来讲,类型名
就是类型名,和名字空间一点关系都没有。 总之,记住配件名加上类型名唯一标识一个
运行时类型。 另外,配件也是.Net框架用于安全策略的基本单位,许多安全策略都是
基于配件的。
㈡ .dll的.NET Framework 程序集
在引入 Microsoft .NET 和 .NET Framework 以后,编译NET Framework的类成DLL文件,优点是安全保密和快速调用,大多数与 DLL 相关联的问题已经通过使用程序集消除了。程序集是在 .NET 公共语言运行库 (CLR) 控制之下运行的逻辑功能单元。程序集实际上是作为 .dll 文件或 .exe 文件存在的。但是,在内部,程序集与 Microsoft Win32 DLL 大不相同。程序集文件包含程序集清单、类型元数据、Microsoft 中间语言 (MSIL) 代码和其他资源。程序集清单包含程序集元数据,以提供使程序集成为自描述程序集所需的全部信息。程序集清单中包含以下信息: 程序集名称 版本信息 区域性信息 强名称信息 程序集文件列表 类型引用信息 引用和依赖程序集信息程序集中包含的 MSIL 代码是无法直接执行的,需要通过 CLR 来执行。默认情况下,当您创建一个程序集时,该程序集是应用程序专有的。要创建共享程序集,需要为该程序集分配强名称,然后在全局程序集缓存中发布该程序集。
下表说明了程序集的一些功能,并将其与 Win32 DLL 的功能进行了比较: 自描述当您创建程序集时,CLR 运行该程序集所需的全部信息都包含在程序集清单中。程序集清单包含一个依赖程序集列表。因此,CLR 可以维护一组在应用程序中使用的一致的程序集。在 Win32 DLL 中,当您使用共享 DLL 时,无法维护应用程序中使用的一组 DLL 之间的一致性。 版本控制在程序集清单中,版本信息由 CLR 记录和实施。另外,可以通过版本策略来实施版本特定用法。在 Win32 DLL 中,无法由操作系统实施版本控制。相反,您必须确保 DLL 向后兼容。 并行部署程序集支持并行部署。一个应用程序可以使用一个版本的程序集,而另一个应用程序可以使用另一不同版本的程序集。从 Windows 2000 开始,通过将 DLL 放置到应用程序文件夹中支持并行部署。另外,Windows 文件保护能够防止系统 DLL 被未经授权的代理改写或替换。 独立和隔离通过使用程序集开发的应用程序可以是独立的,并且与计算机中正在运行的其他应用程序隔离。这一特性有助于创建零干扰安装。 执行程序集在程序集清单所提供的并且由 CLR 控制的安全权限下运行。 语言无关性可以通过使用任何一种受支持的 .NET 语言来开发程序集。例如,可以在 Microsoft Visual C# 中开发程序集,然后在 Microsoft Visual Basic .net项目中使用该程序集。