.net元数据

概述

现在在.net平台开发出来的程序,其编译后的组成为:IL代码、资源、程序集清单和类型元数据。我们知道,IL代码就是我们编写的代码,资源就是图片文件,xml文件,及其他文件,唯独不清楚的是元数据(在这里将程序集清单是元数据),本片博客主要就是说说对于元数据的理解。

元数据是什么?

元数据是什么呢?我们看看百度百科给出的概念,元数据:描述数据的数据,对数据及信息资源的描述性信息,看了这个定义,给我的感觉就是,会的人不用看,不会的人看不懂,从这个定义中我只能说中国语言实在是太博大精深了,反正刚开始我是没有看懂,也是看了大牛们的东西才理解了一些,好了说一下我现在对于元数据的理解。

我们写的程序最终编译程序程序集,元数据就是描述我们这个程序集中都有什么,如:有哪些类,类的访问级别是什么,等等属性,以及,这个类里面都有什么成员,以及这些成员的类型,访问级别等等的属性。当然也描述了程序集合程序集之间的关系,至于为什么要有这些东西,这个就是元数据作用的内容了。

元数据的作用

上面我们知道了元数据是什么,这个模块,我们说的是,元数据的作用,要想知道元数据的作用,我们就需要知道,为什么了有了它,我们都知道,一个新东西的出现,并且能快速的成功崛起的条件是,它解决了当时存在的不好的现象,那么,那个不好的现象是什么呢?

在微软没有推出元数据技术的时候,出现的一个问题是,二进制代码复用的非常的麻烦,当时的二进制的复用是通过com技术实现的,即,我们编写一个com组件,然后编译好的内容给别人使用,别人不能很好的使用,为什么呢?因为别人再调用你的com组件的内容时,是硬编码,硬编码就是没有没有智能提示,调用的方法不知道是不是com组件中的方法,不知道写错了没有,要想知道必须运行才能知道,而我们知道com组件内部的方法是通过com操作手册知道的,可想当时是多么的不便。

对于com技术的出现,也是非常的厉害的,为什么说他厉害呢?因为在它之前,我们几乎不能编写一个让我们放心的库,为什么这么说呢?因为在com出现之前,我们的程序只能直接调用源码,如果我们写一个库的话,要想让别人用,那么就必须给人家你的源码,然后,人家编完程序后,统一生成编译生成一下,你想,你写的东西,还没怎么着就把源码全给了人家,那么人家就相当于拥有了全部。

上面说的是元数据产生的一个整个过程,其主要作用就是解决二进制代码的复用。

元数据的使用

上面说的那些东西,相信大家知道了,元数据可以被VS集成开发环境直接使用,而且是非常的普遍,如:我们添加一个程序集的引用,就可以直接非常方便的使用,其根本就是使用了程序集元数据的缘故,那么,元数据仅此而已吗?当然不是,其实元数据也是可以被我们编程人员使用,其使用的一种方式就是反射,反射的技术就是使用元数据达到的,我们通过反射的技术,可以获得程序集的信息,可以获得类的信息和类内部的信息,可以创建一个对象,可以调用方法等等。

除了系统帮助我们生成一些元数据外,我们在编程的时候,也可以自己给类,给方法,属性等等添加一些元数据,这就是特性的产生,特性是更高层次上的抽象。

总结

.net的元数据不是其原产的,而是借鉴的java的,.net和java之间很多东西都是项目借鉴的;元数据不是.net多余的负担,而是把.net推向更高层次的主帅。

时间: 2024-12-21 23:13:32

.net元数据的相关文章

Android中读取图片EXIF元数据之metadata-extractor的使用

一.引言及介绍 近期在开发中用到了metadata-extractor-xxx.jar 和 xmpcore-xxx.jar这个玩意, 索性查阅大量文章了解学习,来分享分享. 本身工作也是常常和处理大图片打交道,摸索摸索也是多多益善. 首先介绍一下什么是EXIF.EXIF是 Exchangeable Image File 的缩写,这是一种专门为数码相机照片设定的格式.这样的格式能够用来记录数字照片的属性信息,如相机的品牌及型号.相片的拍摄时间.拍摄时所设置的光圈大小.快门速度.ISO等信息.除此之

OAF_OAF页面元数据结构MDS的解析(概念)

2014-06-06 BaoXinjian 一.摘要 在OAF编译文件时,系统会通过XMLImport将所编译的XML文件,编译到数据库中,也就是MDS(Meta data Service),元数据库 而在OAF在展现给用户时,系统将存放MDS的内容,再通过程式组合成XML页面定义文件,并进行渲染 所以MDS可以存放了OAF页面的定义,所以二次开发时,在编译XML文件后,并不需要XML文件存放在服务器上 这个和Form Builder的fmx 和 fmb文件有类似性,fmx为编译后的问题,fmb

python_为被装饰的函数保留元数据

案例: 在函数对象中保存着一些函数的元数据,如: f.__name__           函数名 f.__doc__              函数文档 f.__moudle__       函数所属模块名 f.__dict__              属性字典 f.__defaults__       默认参数组 -- 在使用装饰器后,在装饰器里访问以上属性时,我们看到的是装饰器函数的元数据 需求: 实现在装饰器函数中,保留 被装饰函数 的元数据 如何实现? 通过 functools中的w

hive2.1.0 安装及MySQL元数据管理配置

一.环境准备 jdk 1.8+ hadoop 2.x mysql 5.x 安装之前请确保以上环境已准备完毕 二.安装 1. 下载并解压 进入解压之后的目录,使用当前路径配置HIVE_HOME 2. 进入安装目录下conf目录 vim hive-site.xml 加入以下配置 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type=&

什么是“元数据”

作者:贺易之链接:https://www.zhihu.com/question/20679872/answer/65565699来源:知乎著作权归作者所有,转载请联系作者获得授权. 要理解这个问题,首先要知道“元”是什么.元(meta),一般被我们翻译成“关于……的……”.事实上,这个前缀来源于希腊文,表示“在……之后”,在某样事情结束之后,就含有了“归纳”.“总结”的意思呢?因此,元,就代表着“本原”.“体系”的意思.以文学领域为例,后现代主义文学中有一种小说叫作“元小说”,也就是“关于小说的

论元数据和API管理工具

公司里面的很多部门都在广泛的采用元数据管理,也采用了公司内部开发的元数据管理工具,有些部门的实施效果一直非常好,而有些部门的效果则差强人意.这个问题,其实和软件系统开发完成进入维护阶段后成本居高不下的性质是一样的. 究其本质,是因为国内很多的公司对流程的重视程度多浮于表面,较少的深入去掌握实质部分.在具体讨论元数据和API管理的问题之前,先来说说笔者在很多部门见到过的几类现状,一.大部分业绩比较差的公司/部门的考核通常是这样的,公司有新的项目开发,负责项目管理的项目经理问部门经理要了一批开发人员

反射 学习笔记(一) 基本概念(元数据 程序集 Assembly Type)

一.元数据 可以理解为描述信息(类.类中的成员.成员的参数及返回值). 二.程序集 我们所写的所有代码都会通过编译器编译到程序集(.exe或.dll)文件中 ,并在运行时以[Assembly对象]方式加载到内存中运行 运行时 程序集(.exe或.dll)加载到内存中就是Assembly对象 类(class.Interface)加载到内存中就是Type对象 类的成员(方法.字段.属性.事件)加载到内存中分别是 MethodInfo.PropertyInfo.FieldInfo.EventInfo对

Model元数据解析

Model 元数据是针对数据类型的一种描述信息,主要用于控制数据类型本身及其成员属性在界面上的呈现方式,同时也为Model 绑定和验证提供必不可少的元数据信息.一个复杂数据类型通过属性的方式定义了一系列的数据成员,而Model 元数据不仅仅是数据类型本身的描述,对数据成员的描述也包含其中,所以Model 元数据具有一个层次化结构. AdditionalMetadataAttribute定义的值放在元数据的AdditionalValues中.实现接口IMetadat aAware ModelMet

[MEF]第03篇 MEF延迟加载导出部件及元数据

一.演示概述 此演示介绍了MEF的延迟加载及元数据相关的内容. 在实际的设计开发中,存在着某些对象是不需要在系统运行或者附属对象初始化的时候进行实例化的, 只需要在使用到它的时候才会进行实例化,这种方式就可以理解为对象的迟延初始化,或者叫迟延加载. 对于提升系统的性能大有裨益呀! 另外,还可以为导出的部件添加元数据,以便在代码中提供更加灵活的扩展办法,或获取更多的相关信息.甚至,还可以自定义元数据的接口,无论是定义还是使用都非常的方便. 相关下载(屏幕录像):http://yunpan.cn/c

认识元数据和IL(下)&lt;第五篇&gt;

书接上回: 第二十四回:认识元数据和IL(上) , 第二十五回:认识元数据和IL(中) 我们继续. 终于到了,说说元数据和IL在JIT编译时的角色了,虽然两个回合的铺垫未免铺张,但是却丝毫不为过,因为只有充分的认知才有足够的体会,技术也是如此.那么,我们就开始沿着方法调用的轨迹,追随元数据和IL在那个神秘瞬间所贡献的力量吧 5 元数据和IL在JIT编译时 CLR最终执行的只有本地机器码,所以JIT编译的作用是在运行时将IL代码解析为机器码执行.对于JIT编译,我们会以专门的篇幅来全面了解,本文只