InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Conceptos generales .NET
Introducción a .NET
.NET FrameWork
Common Language Runtime - CLR
MSIL - Microsoft Intermediate Language
Metadatos
Assemblies
Librería de clases
Common Type System (CTS)
Common Language Specification (CLS)
También puedes ver ...
Replicación con SQL Server y SQL Server Mobile
Referencia de iconos del examinador de objetos (Object Browser) en Visual Studio.net
Como clonar objetos .net implementando Iclonable
Introducción a .NET
Common Language Runtime - CLR
MSIL - Microsoft Intermediate Language
Assemblies
Librería de clases
Common Type System (CTS)
Common Language Specification (CLS)

Afiliados
La Web del programador
MundoProgramacion


 

Metadatos

    En la plataforma .NET se distinguen dos tipos de módulos de código compilado: ejecutables (extensión .exe) y librerías de enlace dinámico (extensión .dll generalmente) Ambos son ficheros que contienen definiciones de tipos de datos, y la diferencia entre ellos es que sólo los primeros disponen de un método especial que sirve de punto de entrada a partir del que es posible ejecutar el código que contienen haciendo una llamada desde la línea de comandos del sistema operativo. A ambos tipos de módulos se les suele llamar ejecutables portables (PE), ya que su código puede ejecutarse en cualquiera de los diferentes sistemas operativos de la familia Windows para los que existe alguna versión del CLR.

    El contenido de un módulo no es sólo MSIL, sino que también consta de otras dos áreas muy importantes: la cabecera de CLR y los metadatos:

  • La cabecera de CLR es un pequeño bloque de información que indica que se trata de un módulo gestionado e indica es la versión del CLR que necesita, cuál es su firma digital, cuál es su punto de entrada (si es un ejecutable), etc.

  • Los metadatos son un conjunto de datos organizados en forma de tablas que almacenan información sobre los tipos definidos en el módulo, los miembros de éstos y sobre cuáles son los tipos externos al módulo a los que se les referencia en el módulo. Los metadatos de cada modulo los genera automáticamente el compilador al crearlo, y entre sus tablas se incluyen[1]:

 

Tabla

Descripción

ModuleDef

Define las características del módulo. Consta de un único elemento que almacena un identificador de versión de módulo (GUID creado por el compilador) y el nombre de fichero que se dio al módulo al compilarlo (así este nombre siempre estará disponible, aunque se renombre el fichero)

TypeDef

Define las características de los tipos definidos en el módulo. De cada tipo se almacena su nombre, su tipo padre, sus modificadores de acceso y referencias a los elementos de las tablas de miembros correspondientes a sus miembros.

MethodDef

Define las características de los métodos definidos en el módulo. De cada método se guarda su nombre, signatura (por cada parámetro se incluye una referencia al elemento apropiado en la tabla ParamDef), modificadores y posición del módulo donde comienza el código MSIL de su cuerpo.

ParamDef

Define las características de los parámetros definidos en el módulo. De cada parámetro se guarda su nombre y modificadores.

FieldDef

Define las características de los campos definidos en el módulo. De cada uno se almacena información sobre cuál es su nombre, tipo y modificadores.

PropertyDef

Define las características de las propiedades definidas en el módulo. De cada una se indica su nombre, tipo, modificadores y referencias a los elementos de la tabla MethodDef correspondientes a sus métodos set/get.

EventDef

Define las características de los eventos definidos en el módulo. De cada uno se indica su nombre, tipo, modificadores. y referencias a los elementos de la tabla MethodDef correspondientes a sus métodos add/remove.

AssemblyRef

Indica cuáles son los ensamblados externos a los que se referencia en el módulo. De cada uno se indica cuál es su nombre de fichero (sin extensión), versión, idioma y marca de clave pública.

ModuleRef

Indica cuáles son los otros módulos del mismo ensamblado a los que referencia el módulo. De cada uno se indica cuál es su nombre de fichero.

TypeRef

Indica cuáles son los tipos externos a los que se referencia en el módulo. De cada uno se  indica cuál es su nombre y, según donde estén definidos, una referencia a la posición adecuada en la tabla AssemblyRef o en la tabla ModuleRef.

MemberRef

Indican cuáles son los miembros definidos externamente a los que se referencia en el módulo. Estos miembros pueden ser campos, métodos, propiedades o eventos; y de cada uno de ellos se almacena información sobre su nombre y signatura, así como una referencia a la posición de la tabla TypeRef donde se almacena información relativa al tipo del que es miembro.

Principales tablas de metadatos

    Nótese que el significado de los metadatos es similar al de otras tecnologías previas a la plataforma .NET como lo son los ficheros IDL. Sin embargo, los metadatos tienen dos ventajas importantes sobre éstas: contiene más información y siempre se almacenan incrustados en el módulo al que describen, haciendo imposible la separación entre ambos. Además, como se verá más adelante, es posible tanto consultar los metadatos de cualquier módulo a través de las clases del espacio de nombres System.Reflection de la BCL como añadirles información adicional mediante atributos (se verá más  adelante)


Inicio | Conceptos generales .NET MSIL - Microsoft Intermediate LanguageConceptos generales .NETAssemblies Versión para imprimir Foros de consulta

 
que gonorrea de pagina por juan pablo gil
Respuesta recibida el [08/04/2008 08:43:15]
manada de gonorreas creen que esta pagina es una chimba pero que hp pescao de pagina cojan jucio manada de malparidos de juan pablo gil para esta chanda de pagina

 
manada de malparidos por carlota
Respuesta recibida el [08/04/2008 08:46:40]
perros hp nosaben ni q hacer con la plata solo hacen cosas sin saber

 
los semilleros por de la cabesona andres ramires
Respuesta recibida el [08/04/2008 08:49:06]
que hubo manadas de gonorreas creen que la paagina es muy chimba o que, los semilleros mandamos hp. esto va para esta perra chanda de pagina

 
Primates...no valoran el conoc... por jef
Respuesta recibida el [21/07/2008 02:27:50]
Primates...no valoran el conocimiento, si supieran que los que nos dan esta información son personas ocupadas q dedican un poco de su tiempo con deseos de q uds mismos aprendan y salgan de la ignorancia....

 
Nunca se debe desestimar el conocimiento por Paola
Respuesta recibida el [25/07/2008 08:55:54]
Por que insultar asi y menospreciar el trabajo de otros?? Me parece que siquieren insultar hagan un foro para eso!!! Pero aqui todo lo que nos dan y brindan a nivel conocimiento es mas que valorable e importante. Asi que simios Abstenerse!!!!!! Muy buena la pagina los felicito a mi en particular me super ayuda!!!! GRACIAS!!!!

 
que lastima por ESTEBAN
Respuesta recibida el [24/09/2008 01:12:01]
que pena que consideren el conocimiento gratuíto con repugnancia. No parecen profesionales quienes san estos canales para esto. felicitaciones, buen sitio

 
Que absurdo por Fulano
Respuesta recibida el [26/09/2008 05:20:19]
Que absurdos comentarios. En pro de la información útil en la inet, bastaría que los borrasen.

El artículo me parece bastante útil, sucinto y aclara varias ideas. Gracias.

 
Homo Habilis Vs Australopithecus por Loso
Respuesta recibida el [06/10/2008 08:09:12]
Me encanta ver, como una subcultura que apenas ha salido de la selva... Intenta volver con total desesperacion..

Un saludo a todos aquellos que dedican su tiempo libre en sacarnos las castañas del fuego.

PD:(Australopithecus transcription)
Grrooarr... Tam, tam, Huiiiiil¡¡¡¡
Unga, Unga... Chof Choff...




Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Conceptos generales .NET MSIL - Microsoft Intermediate LanguageConceptos generales .NETAssemblies Versión para imprimir

Metadatos
Autor: José Antonio González Seco
Visitas: 5232 Fecha de publicación: 29/09/2006
José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.




Visitas: 310 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 85 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 207 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 937 | Comentarios: 0 | Archivo: Articulos
Categorias: C#
Visitas: 209 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 675 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista
Visitas: 455 | Comentarios: 0 | Archivo: Articulos
Categorias: Linux|BSD
Visitas: 236 | Comentarios: 0 | Archivo: Articulos
Categorias: Programación|Actualidad
18/08/2008 SQL Server 2008
Visitas: 1135 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 789 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ

Útimos temas recibidos en los foros ...
Coastal Inversiones SAC Coastal Vacations Oportunidad de Negocios por lecasur ... [ASP.NET] 0 11/10/2008
Negocios Rentables desde tu Hogar Coastal Vacations por lecasur ... [Access] 0 11/10/2008
COASTAL VACATIONS OPORTUNIDAD DE NEGOCIOS RENTABLES por lecasur ... [Actualidad] 0 11/10/2008
hacer el nombre de una tabla variable por leicolei ... [SQL Server] 2 10/10/2008
ayuda por yo ... [C#] 2 09/10/2008
Mostar nombre en una sesion de usuario por jhors ... [ASP.NET] 1 10/10/2008
Analista por Rolando ... [SQL Server] 0 10/10/2008
SQL dinámico en TRIGGERS por Alastor ... [ORACLE] 2 03/10/2008
Crystal Reports 8.5 por selvinalberto ... [Visual Basic 6.0] 0 10/10/2008
Agregar Columnas a un datagridview por Tony ... [Visual Basic .NET] 3 20/11/2007
Problema cargando un pl/sql Embebido en Pro*C por ejrivas ... [ORACLE] 0 10/10/2008
Verificar conexion a internet por giraldo ... [Visual Basic .NET] 3 11/12/2006

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
01/06/2007 Autogenerado ESSALUD (Solución)
28/08/2006 Ubuntu en VmWare con VMware Tools
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
06/05/2007 Introducción a Transact SQL    forma parte de...Tutorial de Transact SQL
15/06/2007 Control de errores en Transact SQL    forma parte de...Tutorial de Transact SQL
01/01/2006 Consultas agregadas    forma parte de...Tutorial SQL
11/12/2006 Genéricos    forma parte de...Tutorial C#
12/01/2006 Programación con PL/SQL    forma parte de...Tutorial PL/SQL
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]