.NET概述
CLS(公共语言规范,Common Language Specification):.NET语言必须遵守的规范。
BCL(基类库,Base Class Library):一组可以在程序开发中使用的基类。
CLI(公共语言基础设施,Common Language Infrastructure):在这个软件层中只能识别IL(Intermediate Language),该层负责在程序的执行期间将IL代码编译为机器语言。
CLR(公共语言运行库,Common Language Runtime):MS所提供的CLI实现称为CLR。
程序集(assembly)和模块(module)
程序集是一个逻辑上的单元,由多个模块的文件定义而成。所有这些组成一个程序集的文件必须放在同一文件夹下。所有程序集有且仅有一个主模块。
主模块是一个以.EXE或.DLL为扩展名的文件。
非主模块是一个以.NETMODULE为扩展名的文件。
模块结构
主模块:
|
PE文件头 |
CLR文件头 |
清单 |
元数据 |
IL代码 |
资源 |
非主模块:
|
PE文件头 |
CLR文件头 |
元数据 |
IL代码 |
资源 |
PE(Portable Executable)文件头:存储最低可运行的WINDOWS版本号
CLR文件头:CLR版本信息
清单(manifest):包括了主模块对程序集其他模块和资源文件的使用
元数据(metadata):自描述信息(类型、类型成员、类型依赖项和资源等)
清单的结构
清单包含了程序集的自描述信息,共有四种自描述信息:
- AssemblyDef
- FileDef
- ManifestResourceDef
- ExportedTypeDef
类型元数据段的结构
类型元数据保存在一个表中。共有三种用于类型的源数据表:
- 定义表
- ModuleDef
- TypeDef
- MethodDef
- FieldDef
- PropertyDef
- EventDef
- 引用表:使用一个字节来编号
- AssemblyRef
- ModuleRef
- TypeRef
- MemberRef
- 指针表
- MethodPtr
- ParamPtr
- FieldPtr
堆:元数据段还包括四种堆:
- #Strings:用于保存字符串
- #Blob:用于保存二进制信息
- #US(User String):包含直接定义在代码中的字符串
- #GUID:用于保存GUID,GUID是一个16字节的常量,用于资源的命名
posted on 2008-10-06 12:39 GeoExplorer 阅读(482) 评论(0) 收藏 举报
浙公网安备 33010602011771号