Vue d'ensemble de l'exécution côte à côte

L'exécution côte à côte désigne la possibilité d'exécuter plusieurs versions d'une application ou d'un composant sur le même ordinateur. Vous pouvez avoir plusieurs versions du Common Language Runtime et plusieurs versions d'applications et de composants qui utilisent une version du runtime sur le même ordinateur simultanément.

L'illustration suivante montre l'utilisation par plusieurs applications de deux versions différentes du runtime sur le même ordinateur. Les applications A, B et C utilisent la version 1.0 du runtime, l'application D utilise la version 1.1 du runtime.

Exécution côte à côte de deux versions du runtime

Exécution côte à côte

Le .NET Framework se compose du Common Language Runtime et d'environ deux douzaines d'assemblys qui contiennent les types d'API. Le runtime et les assemblys .NET Framework sont gérés séparément. Par exemple, la version 1.0 du runtime correspond en fait à la version 1.0.3705.0, tandis que la version 1.0 des assemblys .NET Framework correspond à la version 1.0.3300.0.

L'illustration suivante montre l'utilisation par plusieurs applications de deux versions différentes d'un composant sur le même ordinateur. Les applications A et B utilisent la version 1.0 du composant, l'application C utilise la version 2.0 du même composant.

Exécution côte à côte de deux versions d'un composant

Exécution côte à côte

L'exécution côte à côte vous donne davantage de contrôle sur les versions d'un composant auxquelles se lie une application ainsi que sur la version du runtime utilisée par une application.

Avantages de l'exécution côte à côte

Avant Microsoft Windows XP et le .NET Framework, les conflits de DLL se produisaient, car les applications étaient incapables de faire la distinction entre les versions incompatibles du même code. Les informations de type contenues dans une DLL étaient liées uniquement à un nom de fichier. Une application ne disposait d'aucun moyen pour déterminer si les types contenus dans une DLL correspondaient aux mêmes types ayant servi à générer l'application. En conséquence, la nouvelle version d'un composant risquait de remplacer l'ancienne version et de provoquer l'interruption des applications.

L'exécution côte à côte et le .NET Framework fournissent les fonctionnalités suivantes permettant d'éliminer les conflits de DLL :

  • Assemblys avec nom fort

    L'exécution côte à côte utilise des assemblys avec nom fort pour lier des informations de type à une version spécifique d'un assembly. Cela permet d'éviter la liaison d'une application ou d'un composant à une version non valide d'un assembly. Les assemblys avec nom fort permettent également à plusieurs versions d'un fichier de se trouver sur le même ordinateur et d'être utilisé par des applications. Pour plus d'informations, consultez Assemblys avec nom fort.

  • Stockage de code prenant en compte la version.

    Le .NET Framework permet le stockage de code prenant en compte la version dans le Global Assembly Cache. Le Global Assembly Cache est un cache de code à l'échelle de l'ordinateur présent sur tous les ordinateurs où est installé le .NET Framework. Il stocke des assemblys basés sur les informations de version, de culture et de l'éditeur et prend en charge plusieurs versions de composants et d'applications. Pour plus d'informations, consultez Global Assembly Cache.

  • Isolation

    À l'aide du .NET Framework, vous pouvez créer des applications et des composants qui s'exécutent de manière isolée, fonctionnalité essentielle de l'exécution côte à côte. L'isolation implique la connaissance des ressources que vous utilisez et le partage de celles-ci en toute confiance parmi plusieurs versions d'une application ou d'un composant. L'isolation comprend également le stockage de fichiers d'une façon spécifique à la version. Pour plus d'informations sur l'isolation, consultez Indications pour la création d'applications et de composants pour l'exécution côte à côte.

Compatibilité des versions

Les versions 1.0 et 1.1 du .NET Framework sont conçues pour être compatibles. Une application générée avec le .NET Framework version 1.0 doit s'exécuter sur la version 1.1 et une application générée avec le .NET Framework version 1.1 doit s'exécuter sur la version 1.0. Notez toutefois que les fonctionnalités API ajoutées dans la version 1.1 du .NET Framework ne fonctionnent pas avec la version 1.0 du .NET Framework. Les applications créées avec la version 2.0 s'exécuteront uniquement sur la version 2.0. Les applications de la version 2.0 ne pourront pas être utilisées avec la version 1.1 ou avec les versions antérieures. Consultez Compatibilité des versions pour obtenir des informations complètes sur la compatibilité du runtime.

Les versions du .NET Framework sont traitées en tant que bloc unique comportant le runtime et les assemblys .NET Framework associés (un concept appelé unification d'assemblys). Vous pouvez rediriger la liaison d'assembly pour inclure d'autres versions des assemblys .NET Framework. Toutefois, substituer la liaison d'assembly par défaut présente des risques et doit faire l'objet de tests rigoureux avant déploiement.

Voir aussi

Tâches

Comment : utiliser un fichier de configuration de l'application pour cibler une version du .NET Framework

Autres ressources

Exécution côte à côte
Notions de base de l'exécution côte à côte
Création de plusieurs versions d'une application ou d'un composant