Conceptos de aplicaciones aisladas y ensamblados simultáneos

Actualización: noviembre 2007

Una aplicación se considera como aplicación aislada si todos sus componentes son ensamblados simultáneos. Un ensamblado simultáneo es una colección de recursos (un grupo de archivos DLL, clases de ventanas, servidores COM, bibliotecas de tipos o interfaces) que puede usar una aplicación en tiempo de ejecución. Normalmente, un ensamblado simultáneo consta de uno o varios archivos DLL. Por ejemplo, el ensamblado de la biblioteca en tiempo de ejecución de C contiene tres archivos DLL (msvcr90.dll, msvcm90.dll y msvcp90.dll) y lo usan aplicaciones que se generan mediante funciones de la biblioteca CRT.

Compartido o privado

Un ensamblado simultáneo puede ser compartido o privado. Los ensamblados simultáneos compartidospueden ser utilizados por varias aplicaciones que especifiquen, en sus manifiestos, una dependencia respecto al ensamblado. Aplicaciones diferentes que se ejecuten al mismo tiempo pueden compartir varias versiones de ensamblados simultáneos. Un ensamblado privado es un ensamblado que se implementa con una aplicación y está disponible para el uso exclusivo de esa aplicación. Los ensamblados privados se instalan en la carpeta que contiene el archivo ejecutable de la aplicación o en una de sus subcarpetas.

Manifiestos y orden de búsqueda

Tanto las aplicaciones aisladas como los ensamblados simultáneos se describen mediante manifiestos. Un manifiesto es un documento XML que puede ser un archivo XML externo o incrustado dentro de una aplicación o un ensamblado como un recurso. El archivo de manifiesto de una aplicación aislada se utiliza para administrar los nombres y las versiones de los ensamblados simultáneos compartidos con los que se debe enlazar la aplicación en tiempo de ejecución. El manifiesto de un ensamblado simultáneo especifica los nombres, versiones, recursos y ensamblados dependientes de los ensamblados simultáneos. Para un ensamblado simultáneo compartido, su manifiesto se instala en la carpeta WinSxS\Manifests. En el caso de un ensamblado privado, es recomendable incluir su manifiesto en dicho archivo DLL como un recurso con un identificador igual a 1, y el nombre del ensamblado privado podría ser el mismo que el del archivo DLL. Para obtener más información, vea Ensamblados privados.

En tiempo de ejecución, Windows utiliza la información de ensamblado del manifiesto de la aplicación para buscar y cargar el ensamblado simultáneo correspondiente. Si una aplicación aislada especifica una dependencia de ensamblado, el sistema operativo buscará primero entre los ensamblados compartidos en la carpeta WinSxS. Si no se encuentra el ensamblado necesario, el sistema operativo buscará un ensamblado privado instalado en una carpeta de la estructura de directorios de la aplicación. Para obtener más información, vea Secuencia de búsqueda de ensamblados.

Cambiar las dependencias

Después de haber implementado la aplicación, es posible cambiar las dependencias de un ensamblado simultáneo modificando los Archivos de configuración de editor y los Archivos de configuración de aplicación. Un archivo de configuración de editor, también denominado archivo de directivas de edición, es un archivo XML que redirige aplicaciones y ensamblados globalmente, pasando de usar una versión de un ensamblado simultáneo a otra del mismo ensamblado. Un ejemplo de cuándo se puede utilizar el cambio de dependencias es cuando se implementa una corrección de seguridad o de errores para un ensamblado simultáneo particular y un editor de dicho ensamblado desea redirigir todas las aplicaciones para que usen la nueva versión del ensamblado. Un archivo de configuración de aplicación es un archivo XML que redirige una aplicación específica, pasando de usar una versión de un ensamblado simultáneo a otra del mismo ensamblado. Se puede utilizar para redirigir una aplicación particular y que use una nueva versión de un ensamblado simultáneo diferente a la definida en el archivo de configuración de editor global. Para obtener más información, vea Configuración.

Bibliotecas de Visual C++

En Visual C++ 2005, las bibliotecas como ATL, MFC, CRT, OpenMP, MSDIA y estándar de C++ se implementan como ensamblados simultáneos compartidos en la caché de ensamblados nativa. De forma predeterminada, todas las aplicaciones generadas con Visual C++ 2005 se crean con el manifiesto incrustado en el archivo binario final, el cual describe las dependencias de dicho archivo binario sobre las bibliotecas de Visual C++. Para entender la generación de manifiestos para aplicaciones de Visual C++, vea Introducción a la generación de manifiestos para los programas de C/C++

Vea también

Otros recursos

Generar aplicaciones aisladas y ensamblados simultáneos de C/C++