概要

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

元数据是什么?

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

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

元数据的作用

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

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

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

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

元数据的使用

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

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

总结

.net的元数据不是其原产的,而是借鉴的java的。.net和java之间非常多东西都是项目借鉴的。元数据不是.net超额负担,但.net向更高层次的教练。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

.net元数据的更多相关文章

  1. clr 元数据

    clr相关编译器编译生成的托管模块由四部分组成:PE32或32+头.clr头.元数据.IL代码. 元数据和IL代码完全对应,保持一致(:>)性. 元数据有很多用途: VS的智能感知,自动补全: ...

  2. 运用Mono.Cecil 反射读取.NET程序集元数据

    CLR自带的反射机智和API可以很轻松的读取.NET程序集信息,但是不能对程序集进行修改.CLR提供的是只读的API,但是开源项目Mono.Cecil不仅仅可以读取.NET程序集的元数据,还可以进行修 ...

  3. ASP.NET MVC Model元数据(五)

    ASP.NET MVC Model元数据(五) 前言 在上一篇中我们描述了应用于Model上面的各种用于显示控制的特性类,在本篇中将详细的介绍这些特性类的应用,虽然它们跟Model元数据的直接关系并不 ...

  4. ASP.NET MVC Model元数据(四)

    ASP.NET MVC Model元数据(四) 前言 前面的篇幅讲解了Model元数据生成的过程,并没有对Model元数据生成过程的内部和Model元数据结构的详细解释.看完本篇后将会对Model元数 ...

  5. ASP.NET MVC Model元数据(三)

    ASP.NET MVC Model元数据(三) 前言 在上篇中我们大概的讲解了Model元数据的生成过程,并没有对Model元数据本身和详细的生成过程有所描述,本篇将会对详细的生成过程进行讲解,并且会 ...

  6. ASP.NET MVC Model元数据(二)

    ASP.NET MVC Model元数据(二) 前言 在上篇中,给大家留个对Model元数据的印象,并没有对Model元数据有过多的讲解,而在本篇中也不会对Model元数据的本身来解释,而是针对于它的 ...

  7. ASP.NET MVC Model元数据(一)

    ASP.NET MVC Model元数据(一) 前言 在我初学的时候对Model元数据的概念很模糊,或者说是在大脑中没有它的一个模型,作为小白的我去看网上的一些文章还是两眼一黑啥都看不明白,然后我想退 ...

  8. Oracle数据库验证IMP导入元数据是否会覆盖历史表数据

    场景:imp导入数据时,最终触发器报错退出,并未导入存储过程.触发器.函数. 现在exp单独导出元数据,然后imp导入元数据,验证是否会影响已导入的表数据. 测试环境:CentOS 6.7 + Ora ...

  9. JDBC_part3_批处理_事务_元数据

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! JDBC_day03 String a = " ...

  10. Django模型类Meta元数据详解

    转自:https://my.oschina.net/liuyuantao/blog/751337 简介 使用内部的class Meta 定义模型的元数据,例如: from django.db impo ...

随机推荐

  1. 【基础练习】【线性DP】codevs3641 上帝选人题解

    这道题目的数据最后一个有问题,特殊处理了 上题目 题目描写叙述 Description 世界上的人都有智商IQ和情商EQ.我们用两个数字来表示人的智商和情商,数字大就代表其对应智商或情商高. 如今你面 ...

  2. [内核编程] Windebug双机调试环境搭建

    Windebug双机调试环境搭建    开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大 ...

  3. Android多线程研究(3)——线程同步和互斥及死锁

    为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码: package com.maso.test; public class ThreadTest2 implements Runn ...

  4. Android 圆角ListView

    方法一:定义 <?xml version ="1.0" encoding ="UTF-8" ?> <shape xmlns:android = ...

  5. SNMP 配置

    http://blog.sina.com.cn/s/blog_593bf1da0100xsvu.html

  6. Android 动态改变高度以及计算长度的EditText

    前段时间项目需求,需要做一个有限制长度的输入框并动态显示剩余文字,同时也要动态改变EditText的高度来增加用户体验.现整理出来与大家分享. 先来看看效果图 看了效果就分享一下布局 <Rela ...

  7. [经典面试题]k节点一组旋转链表

    [题目] 给出一个链表和一个数k,比方链表1→2→3→4→5→6.k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4.翻转后4→3→2→1→5→6. 假设节点的数 ...

  8. [转]Redis 与Mysql通信

    http://blog.csdn.net/hpb21/article/details/7852934 找了点资料看了下.学习心得如下: 1 Mysql更新Redis Mysql更新Redis借鉴mem ...

  9. ActivityManagerService的启动过程

    AMS对象随系统进程启动而构建,随着系统进程退出而消亡,可以说,AMS与系统进程共存亡. 先上一张总的启动时序图: 上图分为三个步骤: 初始化系统进程的运行环境; 初始化AMS对象; AMS对象启动的 ...

  10. Java 中StringBuffer与StringBuilder区别(转)及String类的一些基本操作代码

    String 字符串常量StringBuffer 字符串变量(线程安全)  多个线程访问时,不会产生问题(Synchronized)StringBuilder 字符串变量(非线程安全) 多个线程访问时 ...