Ubicación de ensamblados


Cuando se realiza el despliegue (deployment) de una aplicación .NET, los ensamblados DLL a los que hace referencia la misma pueden tener las siguientes ubicaciones:

  1. El directorio o subdirectorios de la aplicación.

    La utilización del mismo directorio base de la aplicación es la ubicación típica para el despliegue de ensamblados DLL.

    Para utilizar un subdirectorio del directorio base de la aplicación como la ubicación de los ensamblados, se debe especificar en la sección <probing> del archivo de configuración de la aplicación. El siguiente ejemplo le indica al CLR que busque los ensamblados en los subdirectorios “\componentes” y “\controles” de la aplicación.

    <configuration>
        <runtime>
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                <probing privatePath="componentes;controles"/>
            </assemblyBinding>
        </runtime>
    </
    configuration>

    Nota: Si un ensamblado tiene información en el atributo de referencia cultural, los ensamblados tienen que estar en un subdirectorio de la aplicación con el nombre de esa referencia cultural.

    Este tipo de despliegue proporciona todas las ventajas del despliegue XCOPY, pero está limitado al despliegue de ensamblados DLL dentro de la estructura interna del directorio de la aplicación.
     

  2. Caché de Ensamblados Global (GAC).

    El GAC es un depósito seguro y completamente confiable de ensamblados, por ello es la segunda opción más utilizada para su despliegue.

    Para este tipo de despliegue se requiere que el ensamblado se firme con un nombre seguro (strong name):

    >sn -k sgKey.snk
    >al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

    Para  mayor información sobre esta tarea leer: Crear y utilizar ensamblados con nombre seguro.

    Una vez firmado el ensamblado se puede instalar en el GAC con la herramienta Gacutil.exe:

    >gacutil -i MyAssembly.dll

    Nota: En ambiente de producción debe utilizarse Microsoft Windows Installer para desplegar un ensamblado en el GAC.

    El despliegue de ensamblado en el GAC tiene como ventaja que no restringe el despliegue del ensamblado DLL dentro de la estructura del directorio de la aplicación. Pero además nos permite compartir un ensamblado DLL a través de varias aplicaciones sin importar donde se localiza el directorio de cada una de ellas, siendo parecido al antiguo esquema del “System32”. En contra tenemos que perdemos las ventajas del despliegue XCOPY.
     

  3. Una ubicación de red o servidor Web.

    Para este tipo de despliegue, al igual que en el caso anterior, el ensamblado debe tener un nombre seguro. Posteriormente se señala en la sección <codeBase> del archivo de configuración de la aplicación la ubicación donde buscarán los ensamblados individuales, los cuales pueden estar ubicados en: a) cualquier directorio del disco duro local; b) alguna ubicación accesible en la red de trabajo; c) alojada en un servidor Web o FTP. A continuación un ejemplo que configura la descarga bajo demanda por parte del CLR de un ensamblado a través de Internet.

    <configuration>  
        <runtime>
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                <
    dependentAssembly>
                    <
    assemblyIdentity name="myAssembly" publicKeyToken="32ab4ba45e0a69a1"                     culture="neutral" />
                <
    codeBase version="2.0.0.0"                    href="http://www.litwareinc.com/myAssembly.dll"/>             </dependentAssembly>         </assemblyBinding>     </runtime>
    </
    configuration>

Mayor información en: Especificar una ubicación de ensamblado, donde se indica que también se puede usar la herramienta Mscorcfg.msc para especificar ubicaciones de ensamblados.

Acerca de Willy Mejia

Developer, Techie, Human... http://about.me/willyxoft
Esta entrada fue publicada en .NET. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s