net Framework拾遗(1)元数据

来源:互联网 发布:一点仓位软件下载 编辑:程序博客网 时间:2024/05/01 20:21
 

1.概述

 在过去,以一种语言编写的软件组件(.exe或.dll)不能方便地使用以另一种语言编写的软件组件。
 在这个问题的解决上,COM向前迈进了一步。
 .net Framework允许编译器向所有的模块和程序集发出附加的说明性信息,
 从而使组件互用更加简单。
 这种叫“元数据”的信息有助于组件无缝交互。

 元数据是一种二进制信息。
 用以对存储在公共语言运行库可移植可执行文件(PE)文件或存储在内存中的程序进行描述。
 将你的代码编译为PE文件时,便会将元数据插入到该文件的一部分中。
 而将代码转换为MIcrosoft中间语言(MSIL),并将其插入到该文件的另一部分中。
 在模块或程序集中定义和引用的每个糊弄和成员都将在元数据中进行说明。
 当执行代码时,运行库将元数据加载到内存中,
 并引用它来发现有关代码的类,成员,继承等

 元数据以非特定语言的方式描述在代码中定义的每一类型和成员。
 元数据存储以下信息:
  .程序集的说明:
   标识(名称,版本,区域性,公钥)
   导出的类型
   该程序集所依赖的其他程序集
   运行所需的安全权限
 .类型说明
   名称,可见性,基类和实现的接口
   成员(方法,字段,属性,事件,嵌套的类型)
 .属性
   修改类型和成员的其他说明性元素

2.元数据优点:

 对于一种更简单的编程模型而言,元数据是关键
 该模型不需要接口定义语言(IDL)文件,头文件或任何外部组件引用方法
 允许.net语言自动以非特定语言的方式对其自身进行描述。
 通过属性可以对元数据进行扩展

 自描述文件  
   公共语言运行库模块和程序集是自描述的。
   模块的元数据包含与另一模块进行交互所需的全部信息
   元数据自动提供com中IDL的功能允许将一个文件同时用于定义和实现
   运行库模块和程序集不需要向操作系统注册
   运行库使用的说明始终反映编译文件中的实现代码,从而提高应用的可靠性。
 语言互用性和更简单基于组件的设计
   元数据提供所有必需的有关已编译代码的信息,以供您从用不同语言编写的PE文件中继承类。
   可以创建用任何托管语言(任何面向公共语言运行库的语言)编写的任何类的实例,
   不用担心显式封送处理或使用自定义的互用代码
 属性
   .net framework允许在编译文件中声明特定各类的元数据(称为属性)。
   属性用于更精确地控制运行时你的程序如何工作。
   可以通过用户定义的自定义属性向.net framework文件发出自定义的元数据。
 
3.元数据和PE文件结构
 大多数开发人员不需要了解元数据的实现细节

 元数据存储在PE文件的一个部分中
 MSIL存储在PE文件的另一部分中
 文件的元数据部分包含一系列的表和堆数据结构
 MSIL部分包含MSIL和引用PE文件元数据部分的元数据标记
 当使用工具(MSIL反汇编工具ILDASM.exe)来查看代码的MSIL或使用运行库调试器(CORDBG.exe)来执行内存转储时,可能会遇到元数据标记。
 
按照自己的理解:元数据应该是用来描述指定的代码段“是什么”的一种结构
        使用元数据,就可以让编译器或其他程序“知道”要操作的对象“是什么”的问题。 

原创粉丝点击