Asamblea DLL EXE en .NET Framework

Asamblea DLL EXE en .NET Framework

Ensamblar DLL EXE en .NET Framework

En este artículo, voy a hablar sobre Assembly DLL y EXE en .NET Framework con ejemplos Lea nuestro artículo anterior donde discutimos Código administrado y no administrado en C#.NET Solicitud. Como parte de este artículo, vamos a discutir los siguientes puntos en detalle.

  1. ¿Qué es un ensamblado en .NET?
  2. Tipos de ensamblados en .NET Framework.
  3. Comprensión de DLL y EXE.
  4. ¿Cuál es la diferencia entre DLL y EXE en .NET Framework?
¿Qué es un ensamblado en .NET?

Según MSDN, los ensamblajes son la base de las aplicaciones de .NET Framework; forman la unidad fundamental de despliegue. En palabras simples, podemos decir que Assembly no es más que un código .NET precompilado que puede ejecutarse mediante CLR (Common Language Runtime).

Comprendamos la definición anterior con un ejemplo. Para entender esto, creemos una aplicación de consola simple con el nombre MyConsoleApp. Una vez que haya creado la aplicación de consola, modifique la clase de programa como se muestra a continuación.

using System;
namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("This is From Console App");
            Console.ReadKey();
        }
    }
}

Ahora, si hace clic con el botón derecho en su proyecto y hace clic en Abrir carpeta en el Explorador de archivos, encontrará muchas cosas (código fuente, es decir, archivo de clase Program.cs, Configuración es decir, aplicación, carpeta de propiedades que contiene el archivo de clase AssemblyInfo.cs, etc.) como se muestra en la siguiente imagen.

Pero cuando crea la aplicación, pondrá todo en un solo EXE como se muestra en la imagen a continuación. Puede encontrar este archivo en bin => Depurar carpeta. Puede copiar esta única unidad, es decir, MyConsoleApp.exe, colocarla en cualquier lugar de su computadora y desde allí ejecutarla.

Por lo tanto, un ensamblado no es más que una sola unidad de implementación o es un fragmento de código precompilado que CLR puede ejecutar. Para una mejor comprensión, consulte el siguiente diagrama.

Tipos de ensamblados en .NET Framework:

En .NET Framework, hay dos tipos de ensamblados. Son los siguientes:

  1. EXE (ejecutable)
  2. DLL (Biblioteca de enlaces dinámicos)

En .NET Framework, cuando compilamos una aplicación de consola o una aplicación de Windows, genera EXE, mientras que cuando compilamos un proyecto de biblioteca de clases o una aplicación web ASP.NET, genera DLL. En .NET framework, tanto EXE como DLL se denominan ensamblados.

Comprensión de DLL y EXE en .NET Framework:

Ya creamos una aplicación de consola y ya vemos que crea un EXE. Veamos un ejemplo de DLL. Para crear una DLL, agreguemos un proyecto de biblioteca de clases a la misma solución con el nombre MyClassLibrary. Una vez que haya creado el proyecto de biblioteca de clases, de forma predeterminada creará un archivo de clase con el nombre Class1. Modifiquemos Class1 como se muestra a continuación.

namespace MyClassLibrary
{
    public class Class1
    {
        public string GetData()
        {
            return "This is from Class Library";
        }
    }
}

Con esto, ahora nuestra solución contiene dos proyectos. Una es una aplicación de consola y la otra es un proyecto de biblioteca de clases, como se muestra a continuación.

Ahora, cree la solución y debería obtener los ensamblajes respetados como se esperaba en su propio bin => Carpeta de depuración. Ahora, la pregunta que debería venir a tu mente es ¿cuál es la diferencia entre el DLL y el EXE?

¿Cuál es la diferencia entre el DLL y el EXE en .NET Framework?

El EXE se ejecuta en su propio espacio de direcciones o en su propio espacio de memoria. Si hace doble clic en MyConsoleApp EXE, obtendrá el siguiente resultado. Ahora, este programa se está quedando sin su propio espacio de memoria.

Sin cerrar esta ventana, nuevamente si hace doble clic en MyConsoleApp EXE, nuevamente se ejecutará y mostrará el mismo resultado. Esto se debe a que ahora, ambos EXE se ejecutan en su propio espacio de memoria. El punto que debe recordar es que EXE es un archivo ejecutable y puede ejecutarse por sí mismo como una aplicación.

En cuanto a DLL, no se puede ejecutar por sí mismo como EXE. Eso significa MyClassLibrary.dll no puede ser invocado o ejecutado por sí mismo. Necesita un consumidor que lo invoque. Entonces, una DLL se ejecuta dentro de otro espacio de memoria. El otro espacio de memoria puede ser una consola, aplicaciones de Windows o aplicaciones web que deberían tener su propio espacio de memoria.

Por ejemplo, puede invocar la DLL desde una aplicación de consola. Tenemos una consola llamada MyConsoleApp y veamos cómo invocar MyClassLibrary.dll desde esta aplicación de consola. Para usar MyClassLibrary.dll dentro de MyConsoleApp, primero debe hacer una referencia a esa DLL. Una vez que agregue una referencia a MyClassLibrary DLL, y luego modifique la clase de programa de la aplicación de consola como se muestra a continuación.

using System;
using MyClassLibrary;
namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //Using MyClassLibrary DLL
            Class1 obj = new Class1();
            Console.WriteLine(obj.GetData());

            Console.WriteLine("This is From Console App");
            Console.ReadKey();
        }
    }
}

Ahora, ejecute la aplicación y debería ver el siguiente resultado. Aquí, la DLL de MyClassLibrary se ejecuta dentro del espacio de direcciones de MyConsoleApp.

Entonces, en resumen, la diferencia entre ellos es que un EXE es un archivo ejecutable y puede ejecutarse por sí mismo como una aplicación, mientras que un EXE u otro DLL generalmente consumen DLL y no podemos ejecutar o ejecutar DLL directamente.

Ahora, la pregunta que debería venir a su mente es ¿por qué necesitamos archivos DLL, ya que no se invocan por sí mismos? La razón detrás de la DLL es la reutilización. Suponga que desea alguna clase, o lógica, o algo más en muchas aplicaciones, luego simplemente coloque esas clases y la lógica dentro de una DLL, y consulte esa DLL donde sea necesario.

Eso es todo por hoy. En el próximo artículo, hablaré sobre Dominio de aplicación en .NET Framework en detalle. Aquí, en este artículo, intento explicar Assembly DLL EXE en .NET Framework en detalle con ejemplos. Espero que disfrutes este artículo y tengas una mejor idea de estos tres conceptos.