标签:
CLR即公共语言运行时,是一个可由多种编程语言使用的‘运行时’,其核心功能(内存管理,程序集加载,安全性,异常处理和线程同步等)均可由面向CLR的所有语言使用。运行时不必关心开发人员用哪一种语言写源代码,只要编译器是面向CLR的。
通过语言对应的编译器检查语法和分析源码编译生成某些托管模块(PE32或PE32+)通过数据执行保护(DEP)和地址空间布局随机化(ASLR)增强整个系统的安全性。接下来详说其主要组成部分:
简单来说一种格式标准让其成为一种模块,模块中元数据其实就是数据表的集合,用以关联IL代码文件可以说是同步的。
元数据的加入有许多用途:
CLR其实不和模块工作,通常将一个或多个模块/资源文件逻辑性分组成程序集(抽象概念,是重用,安全性以及版本控制的最小单元,相当于组件)。编译器默认将生成的托管模块转换成程序集,C#编译器生成的是含有清单的托管模块,清单指出程序集只由一个文件构成。所以对于只有一个托管模块且无资源文件的项目,程序集就是托管模块。在程序集的模块中,包含于引用的程序集有关的信息,这些信息使程序集能够自描述(C#通过元数据来描述自身,当执行代码时,运行库将元数据加载到内存,并引用他来发现有关代码的类成员等信息)。程序集吧逻辑表示与物理表示区分开,便于部署文件节省空间缩短安装时间。
标签:
原文地址:http://www.cnblogs.com/mjys-gh/p/4845101.html