2012-02-23 15 views
7

estoy aprendiendo marco .NET y estado leyendo a través de metadatos y Manifiesto.Diferencia entre metadatos y manifiesto

"Metadata son los datos sobre los datos y Manifiesto son los datos sobre el montaje!"

Q: So is not Manifest a metadata?

¿Cuáles son sus diferencias?

+0

Esa declaración citada es de calidad cuestionable. Da una definición de "manifiesto" en el contexto específico de .NET, pero en lugar de hacer lo mismo con el término "metadatos", se recurre a una definición muy general de la palabra que no es del todo útil con respecto a .NET. En .NET, "metadatos" generalmente significa algo como "información, incrustada en un ensamblaje, sobre todos los tipos y sus miembros definidos o referenciados desde ese ensamblaje". ¿Cuál es la fuente de tu cita? – stakx

Respuesta

13

Manifiesto mantiene la información sobre los ensamblajes como versión, nombre de configuración regional y un nombre fuerte opcional que identifica de forma única el ensamblaje. Esta información manifiesta es utilizada por CLR. El manifiesto también contiene las exigencias de seguridad para verificar este ensamblaje. También contiene los nombres y hash de todos los archivos que componen el conjunto. El manifiesto de ensamblado .NET contiene un hash criptográfico de diferentes módulos en el ensamblaje. Y cuando se carga el ensamblado, el CLR recalcula el hash de los módulos en cuestión, y lo compara con el hash incrustado . Si el hash generado en tiempo de ejecución es diferente al del encontrado en el manifiesto, .NET se niega a cargar el ensamblaje y arroja una excepción.

Metadata significa datos sobre los datos. Los metadatos producen los tipos disponibles en ese ensamblaje, es decir. clases, interfaces, enumeraciones, estructuras, etc., y sus espacios de nombres que contienen, el nombre de cada tipo, su visibilidad/alcance, su clase base, las interfaces que implementó, sus métodos y su alcance, y los parámetros de cada método , propiedades del tipo, etc. Los metadatos del ensamblado son generados automáticamente por los compiladores de alto nivel a partir de los archivos fuente. El compilador incrusta los metadatos en el archivo de salida de destino, un dll, un .exe o un .netmodule en el caso del ensamblado de varios módulos .

+0

por lo que se manifiesta un metadato o no? –

+2

intenta responder a la pregunta o sugiere enlaces a donde se puede obtener una respuesta respetuosa. evitar copiar pegar! –

+1

No Mastero Manifest no son los metadatos .., Manifest trabaja en el nivel superior i; e en el nivel de ensamblaje para comprobar su Nombre fuerte, versiones y todo., Y aceptar el ensamblaje o rechazarlo según el código hash generado . Los metadatos tratan sobre la información de las clases, la interfaz, etc., como sugerí en la respuesta. Espero que esta vez haya logrado algo ... :-) –

0

De "Programming .NET Components, Second Edition" By Juval Lowy published by O'Reilly página 39, párrafo primero:

Metadatos:

Metadatos es la forma completa de la descripción de lo que está en un ensamblado de .NET. Al profundizar en los metadatos se obtienen los tipos disponibles en ese conjunto, viz. clases, interfaces, enumeraciones, estructuras, etc., y sus espacios de nombres , el nombre de cada tipo, su visibilidad/alcance, su clase base , las interfaces que implementó, sus métodos y su alcance, y los parámetros de cada método, las propiedades del tipo, etc. El ensamblado metada es generado automáticamente por los compiladores de alto nivel a partir de los archivos fuente . El compilador incrusta los metadatos en el archivo de salida de destino , un dll, un .exe o un .netmodule en el caso del ensamblaje de varios módulos . En el caso de un ensamblaje multimodular, cualquier módulo que contenga IL debe tener los metadatos incrustados en él para describir los tipos en ese módulo. Cada compilador apuntado para.Se requiere NET CLR para generar e insertar los metadatos en el archivo de salida, y los metadatos deben estar en un formato estándar. .NET Reflection ampliamente utiliza la información de metadatos para conocer la información de tipo dinámicamente.

Metadatos es información adicional en un ensamblaje administrado que describe cosas como tipos, nombres de tipos, nombres de métodos, etc. (básicamente, la información que puede obtener de los servicios de Reflection). Ver http://msdn2.microsoft.com/en-us/library/ms404430.aspx para más detalles.

Asamblea Manifiesto:

metadatos describe el contenido en un ensamblaje, mientras que el manifiesto describe el montaje en sí, proporcionando los atributos lógicos compartidos por todos los módulos y todos los componentes en el conjunto . El manifiesto contiene el nombre del ensamblado, el número de versión, la configuración regional y un nombre seguro opcional que identifica de forma única el ensamblaje. Esta información manifiesta es utilizada por CLR. El manifiesto también contiene las demandas de seguridad para verificar este ensamblaje. También contiene los nombres y hash de todos los archivos que componen el conjunto. El manifiesto de ensamblado .NET contiene un hash criptográfico de diferentes módulos en el ensamblado. Y cuando se carga el ensamblaje, el CLR vuelve a calcular el hash de los módulos en cuestión, y lo compara con el hash embebido . Si el hash generado en tiempo de ejecución es diferente del encontrado en el manifiesto, .NET rechaza cargar el ensamblado y arroja una excepción . Esto es diferente de COM, bajo COM es posible intercambiar un archivo DLL o EXE original con otro, que tienen las mismas Bibliotecas/Interfaces tipo y causar daños al sistema, al ejecutar código malicioso. El manifiesto también se genera automáticamente mediante el compilador de alto nivel a partir de los archivos fuente de todos los módulos en el ensamblaje . El manifiesto se incorpora a un único archivo físico y solo una vez ya que es común para todos los módulos en un ensamblaje, mientras que los metadatos deben incorporarse a todos los módulos. Los compiladores .NET CLR compatibles deben generar el manifiesto y deben estar en el formato estándar . Usando el manifiesto .NET captura información sobre otros ensambles referenciados en . Esto garantiza la compatibilidad de la versión y el ensamblaje interactúa con el conjunto fiable exacto de otros ensamblajes que espera. El manifiesto contiene todos los nombres de ensamblado referenciados , su clave pública (si hay un nombre seguro disponible), su número de versión y configuración regional. Mientras se ejecuta este ensamblaje, .NET garantiza que solo se utilizan estos ensamblados específicos, y que solo se cargan las versiones compatibles.

"Manifiesto" es un término bastante sobrecargado. En .NET, un "manifiesto de ensamblaje" es algunos metadatos en un ensamblado que describe cosas de control de versiones. Vea aquí http://msdn2.microsoft.com/en-us/library/1w45z383.aspx para más detalles.

se puede leer más sobre el montaje de manifiesto here

metadatos acerca de la reunión y de los módulos en general se llama el manifiesto

+1

Se considera una buena práctica incluir la fuente para las comillas. ¿Es [este] (http://kamleshsingh.wetpaint.com/page/Assembly+manifest,metadata)? –

+0

oops lo siento. Dejame revisar otra vez. Porque he estado buscando en Google todo el día y descubrí algo comprensible. –

+0

Fuentes: dotNetFunda y MSDN –

0

metadatos describen el contenido en un ensamblaje, mientras que el manifiesto describe el montaje en sí, proporcionando los atributos lógicos compartidos por todos los módulos y todos los componentes en el ensamblaje. El manifiesto contiene el nombre del ensamblado, el número de versión, la configuración regional y un nombre fuerte opcional que identifica de manera única el ensamblaje.

3

Manifiesto: almacena la información (como el nombre de los ensamblajes, la versión, etc.) sobre los ensamblajes requeridos por CLR para cargar los ensamblajes.

Metadatos: Se almacena el detalle de los conjuntos como el nombre del método, a sus miembros, etc.

Tanto los archivos se generan automáticamente por el compilador al convertir el código de MSIL.

6

Aquí Asamblea es la respuesta más simple.

Ensamblaje: uno o más archivos que componen su programa. Por lo general, Exe o dll o una combinación de estos y algún otro conjunto de archivos

MetaData: Contiene ambos 1) Metadatos de ensamblaje 2) Metadatos de tipo.

1) Metadatos de ensamblaje también se conoce como MANIFEST, contiene nombre de ensamblado, versiones, cultura, información de nombre fuerte, información de ensamblado referenciada ... etc.

2) Tipo de metadatos exportados y métodos de ensamblaje.

enter image description here