Información general sobre la ejecución simultánea

Actualización: noviembre 2007

La ejecución simultánea es la capacidad de ejecutar múltiples versiones de una aplicación o componente en el mismo equipo. Se pueden tener varias versiones de Common Language Runtime y varias versiones de las aplicaciones y componentes que utilice una versión del motor en tiempo de ejecución, de forma simultánea y en el mismo equipo.

La ilustración siguiente muestra varias aplicaciones que utilizan dos versiones diferentes del motor en tiempo de ejecución en el mismo equipo. Las aplicaciones A, B y C utilizan la versión 1.0 del motor en tiempo de ejecución, mientras que la aplicación D utiliza la versión 1.1.

Ejecución simultánea de dos versiones del motor en tiempo de ejecución

.NET Framework está formado por Common Language Runtime y por, aproximadamente, dos docenas de ensamblados que contienen los tipos de la API. El motor en tiempo de ejecución y los ensamblados de .NET Framework tienen versiones independientes. Por ejemplo, la versión 1.0 del motor en tiempo de ejecución es en realidad la versión 1.0.3705.0, mientras que la versión 1.0 de los ensamblados de .NET Framework es la versión 1.0.3300.0.

La ilustración siguiente muestra varias aplicaciones que utilizan dos versiones diferentes de un componente en el mismo equipo. Las aplicaciones A y B utilizan la versión 1.0 del componente mientras que la aplicación C utiliza la versión 2.0 del mismo componente.

Ejecución simultánea de dos versiones de un componente

La ejecución simultánea ofrece un mayor control sobre las versiones de un componente a las que se enlaza una aplicación, y sobre la versión del motor en tiempo de ejecución que utiliza una aplicación.

Ventajas de la ejecución simultánea

Antes de Microsoft Windows XP y de .NET Framework, se producían conflictos de DLL debido a que las aplicaciones no podían distinguir las versiones incompatibles del mismo código. La información de los tipos contenida en una DLL se enlazaba únicamente a un nombre de archivo. Una aplicación no podía saber de ninguna manera si los tipos incluidos en una DLL eran los mismos los tipos con los que se había creado la aplicación. Como consecuencia de esto, una nueva versión de un componente podía sobrescribir la versión antigua e interrumpir las aplicaciones.

La ejecución simultánea y .NET Framework proporcionan las siguientes características que eliminan los conflictos con las DLL:

  • Ensamblados con nombre seguro

    La ejecución simultánea utiliza ensamblados con nombre seguro para enlazar la información de los tipos a una versión específica de un ensamblado. De este modo, se impide que una aplicación o componente se enlace a una versión no válida de un ensamblado. Los ensamblados con nombre seguro también permiten múltiples versiones de un archivo en el mismo equipo y que las aplicaciones las utilicen. Para obtener más información, vea Ensamblados con nombre seguro.

  • Almacenamiento de código con identificación de versión

    .NET Framework ofrece un almacenamiento de código con identificación de la versión en la caché de ensamblados global. La caché de ensamblados global es una memoria caché de código que afecta a todo el equipo y que existe en los equipos con .NET Framework. Almacena ensamblados en función de la información de versión, referencia cultural y editor, y admite múltiples versiones de componentes y aplicaciones. Para obtener más información, vea Caché de ensamblados global.

  • Aislamiento

    Con .NET Framework se pueden crear aplicaciones y componentes que se ejecuten de forma aislada, un componente esencial de la ejecución simultánea. El aislamiento implica que se reconocen los recursos que se utilizan y que se comparten con confianza entre múltiples versiones de una aplicación o un componente. El aislamiento también incluye el almacenamiento de archivos en el modo específico de la versión. Para obtener más información sobre el aislamiento, vea Instrucciones para crear aplicaciones y componentes para la ejecución simultánea.

Compatibilidad de versiones

Las versiones 1.0 y 1.1 de .NET Framework se han diseñado para que sean compatibles entre sí. Una aplicación creada con la versión 1.0 de .NET Framework debe poder ejecutarse en la versión 1.1 y, viceversa, una aplicación creada con la versión 1.1 de .NET Framework debe poder ejecutarse en la versión 1.0. No obstante, tenga en cuenta que las características de la API agregada a la versión 1.1 de .NET Framework no funcionarán con la versión 1.0 de .NET Framework. Las aplicaciones creadas con la versión 2.0 sólo se ejecutarán en dicha versión. Las aplicaciones creadas con la versión 2.0 no se ejecutarán en la versión 1.1 ni en las anteriores. Vea Compatibilidad de versiones para obtener una descripción completa de la compatibilidad del motor en tiempo de ejecución.

Las versiones de .NET Framework se tratan como una sola unidad formada por el motor en tiempo de ejecución y los ensamblados asociados de .NET Framework (que se conoce como unificación de ensamblados). Se puede redirigir el enlace de ensamblados para incluir otras versiones de los ensamblados de .NET Framework, pero reemplazar el enlace de ensamblados predeterminado puede ser peligroso y se debe probar rigurosamente antes de su implementación.

Vea también

Tareas

Cómo: Utilizar el archivo de configuración de una aplicación para determinar la versión de .NET Framework que se va a usar

Otros recursos

Ejecución simultánea

Fundamentos de la ejecución simultánea

Crear varias versiones de una aplicación o componente