2009-12-11 18 views
5

¿Alguien podría señalar la ventaja de usar ensamblajes, en el 'contexto' de ASP.NET.Conjuntos vs bibliotecas de clases (.NET)

Según tengo entendido, los ensamblajes se ejecutan como ejecutables, tienen un solo punto de entrada y se pueden ejecutar dentro de un dominio de aplicación, pero he encontrado muy pocos ejemplos adecuados en la web.

Respuesta

8

Un montaje no es sólo un ejecutable ... un montaje es esencialmente una biblioteca .NET que puede tienen un punto de entrada ejecutable ...

Wikipedia article with description of assemblies Primer párrafo:

En el Microsoft .NET framework, un ensamblado es una biblioteca de código parcialmente compilada para su uso en el despliegue, control de versiones y seguridad. Hay dos tipos : conjuntos de procesos (EXE) y conjuntos de biblioteca (DLL). Un ensamblado de proceso representa un proceso que utilizará las clases definidas en los ensamblados de la biblioteca . Los ensamblados .NET contienen el código en CIL, que generalmente es generado a partir de lenguajes .NET, y compilados en lenguaje de máquina en el tiempo de ejecución por el compilador CLR just-in-time . Un ensamblaje puede consistir en uno o más archivos. Los archivos de código son llamados módulos. Un conjunto puede contiene más de un módulo de código y ya que es posible utilizar diferentes idiomas para crear módulos de código que es técnicamente posible utilizar varios idiomas diferentes para crear un montaje . Sin embargo, Visual Studio no admite el uso de diferentes idiomas en un solo ensamblaje.

+1

Entonces, ¿una biblioteca es un subconjunto de un ensamblaje? – maxp

+0

No diría subconjunto ... hay superposición entre las dos definiciones ... –

3

Los ensambles no son siempre ejecutables. La mayoría de las personas los definirá como una colección de módulos de clase presentada como un único archivo DLL o EXE. Lo más parecido a ellos son los Java JAR.

Tienen metadatos (ver http://en.wikipedia.org/wiki/.NET_metadata) que contiene un montón de información tal como

  • versión
  • métodos y tipos

También tienen un manifiesto que es parte de estos metadatos (ver http://msdn.microsoft.com/en-us/library/1w45z383.aspx).

Puede registrar ensamblajes en el Caché de ensamblaje global (GAC) (consulte http://en.wikipedia.org/wiki/Global_Assembly_Cache) y los pondrá a disposición de todos los otros programas en el equipo. (cuando en Visual Studio, usa "Agregar referencias", y navega por la pestaña .Net, está viendo una lista de ensamblajes en el GAC).

No tiene que agregarlos en el GAC, puede hacer referencia directamente a un ensamblado privado, pero al registrarlos en el GAC, los puede hacer disponibles globalmente en la computadora.

Este enlace contiene información sobre los ensamblados sensata:

2

Esta pregunta no tiene mucho sentido. Los ensamblajes contienen librerías de clase, no es una o ninguna clase de cosas. Incluso si solo tiene archivos aspx, la primera vez que alguien accede a una página, ASP.Net la compila en una clase y luego en un ensamblado sobre la marcha.

0

@maxp, ¿está preguntando si es mejor incluir la clase como un archivo .cs en el proyecto o como un .dll compilado en las referencias?

Solía ​​mantener las funciones comunes en los archivos de clase (.cs) y simplemente incluirlas en el proyecto en el que estaba trabajando. Las clases viven bajo el control de la fuente, así que solo me aseguraría de obtener la última versión cada vez que creara un nuevo proyecto. Sin embargo, últimamente, he comenzado a compilarlos y registrarlos en el GAC. Esto ayuda a reducir el dolor de cabeza de no saber realmente qué versión de la clase se incluye en un proyecto determinado. Si realiza un cambio en la clase, simplemente vuelva a registrarla en el GAC y todas sus aplicaciones se actualizarán y usarán la misma versión.

El único inconveniente real que he encontrado es si está intentando depurar y recorrer la lógica. Solo asegúrese de que sus clases sean sólidas antes de compilar y colocar en GAC.

Espero que esto ayude a responder su pregunta.

+0

No realmente, pero gracias por la respuesta. Nuestra solución para abordar su problema de "código de la última versión" es tener una gran solución que contenga todos los proyectos, incluida la biblioteca de clases. A continuación, agregamos referencias a la biblioteca de clases para cada proyecto, de modo que con cada compilación nueva, todos los proyectos se actualizan con la biblioteca más nueva. – maxp