元数据

面向CLR的每个编译器还需要在每个托管模块中生成完整的元数据。
元数据:(metadata)是一系列特殊的数据表,它们描述了模块中定义的内容,比如类型及其成员。除此之外,还有一些元数据表指出了托管模块引用的内容,比如导入的类型及其成员。元数据是一些老技术的超集。这些老技术包括“类型库(Type Library)”和“接口定义语言(Interface Definition Language,IDL)”文件等。要注意的一个重点在于,CLR元数据比它们完整的多。另外,和类型库及IDL不同,元数据总是与包含IL(中间语言)代码的文件关联在一起。事实上,元数据总是嵌入与代码相同的EXE/DLL,这使两者密不可分。由于编译器同时生成元数据和代码,并将它们绑定到最终生成的托管模块中,所以元数据及其描述的IL(中间语言)代码永远不会失去同步。

 

元数据有多种用途,下面仅列出一部分。

1:在编译时,元数据消除了对头和库文件需求,因为与引用的类型/成员有关的所有信息都包含在用IL来实现的类型/成员的文件中。编译器可以直

接从托管模块读取元数据。

2:Microsoft Visual Sutdio使用元数据来帮助我们写代码。它的“智能感知(IntelliSense)”特性能解析元数据,指出一个类型提供了什么方法
、属性、事件和字段。如果是一个方法,还能指出方法需要什么参数。

3:CLR的代码验证过程使用元数据来确保代码只执行“安全”的操作

4:元数据允许将一个对象的字段序列化到一个内存块中,将其发送给另一台机器,然后反序列化,在远程机器上重建对象状态。

5:元数据允许垃圾收集器跟踪对象的生存期。垃圾收集器能判断任何对象的类型,并根据元数据知道那个对象中的哪些字段引用了其他对象。

posted @ 2008-08-29 17:18  不染丹心  阅读(394)  评论(1编辑  收藏  举报