Avantages des assemblys

Mise à jour : novembre 2007

Les assemblys sont conçus pour simplifier le déploiement des applications et pour résoudre les problèmes de versioning pouvant se produire avec les applications à base de composants.

Les utilisateurs finaux et les développeurs sont habitués aux problèmes de versioning et de déploiement qui proviennent des systèmes à base de composants d'aujourd'hui. Certains utilisateurs finaux ont fait l'expérience frustrante d'installer une nouvelle application sur leur ordinateur pour découvrir par la suite qu'une application existante s'est soudainement arrêtée de fonctionner. De nombreux développeurs ont passé d'innombrables heures à essayer d'assurer la cohérence de toutes les entrées du Registre nécessaires pour activer une classe COM.

Beaucoup de problèmes de déploiement ont été résolus grâce à l'utilisation d'assemblys dans le .NET Framework. Comme les assemblys sont des composants autodescriptifs qui n'ont pas de dépendances avec des entrées du Registre, ils n'ont aucun impact lors de l'installation d'une application. Ils simplifient également la désinstallation et la réplication des applications.

Problèmes de versioning

Deux problèmes de versioning se posent actuellement avec les applications Win32 :

  • Les règles de versioning ne peuvent pas être exprimées entre les éléments d'une application ni être appliquées par le système d'exploitation. La stratégie actuelle repose sur la compatibilité descendante, qui est souvent difficile à garantir. Les définitions d'interface doivent être statiques une fois publiées et un seul élément de code doit assurer la compatibilité descendante avec les versions antérieures. De plus, le code est généralement conçu de telle sorte qu'une seule de ses versions puisse être présente et exécutée sur un ordinateur à un moment donné.

  • Il est impossible d'assurer la cohérence entre des jeux de composants qui sont générés ensemble et le jeu qui est présent au moment de l'exécution.

Ces deux problèmes de versioning concourent à créer des conflits de DLL, dans le cas où l'installation d'une application pourrait par inadvertance arrêter le fonctionnement d'une application existante, car un certain composant logiciel ou une DLL donnée qui étaient installés n'étaient pas complètement compatibles avec une version antérieure. Lorsque le cas se produit, aucune fonction de diagnostic ou de résolution du problème n'existe dans le système.

Fin des conflits de DLL

Microsoft® Windows® 2000 marque le point de départ vers le traitement définitif de ces problèmes. Il propose deux fonctionnalités qui résolvent partiellement les conflits de DLL :

  • Windows 2000 vous permet de créer des applications clientes dans lesquelles les fichiers .dll dépendants figurent dans le même répertoire que le fichier .exe de l'application. Windows 2000 peut être configuré pour rechercher un composant dans le répertoire dans lequel le fichier .exe figure avant de vérifier le chemin qualifié complet ou de rechercher le chemin normal. Cela permet aux composants de rester indépendants des composants installés et utilisés par d'autres applications.

  • Windows 2000 verrouille les fichiers qui sont livrés avec le système d'exploitation dans le répertoire System32, de sorte qu'ils ne puissent pas être remplacés par inadvertance lors de l'installation d'applications.

Le Common Language Runtime utilise les assemblys pour poursuivre cette évolution vers une solution définitive aux conflits de DLL.

Solution apportée par les assemblys

Pour résoudre les problèmes de versioning, ainsi que d'autres problèmes menant à des conflits de DLL, le runtime utilise des assemblys pour effectuer les opérations suivantes :

  • permettre aux développeurs de spécifier les règles de version entre les différents composants logiciels ;

  • fournir l'infrastructure permettant d'appliquer les règles de versioning ;

  • fournir l'infrastructure autorisant l'exécution simultanée de plusieurs versions d'un composant (appelée exécution côte à côte).

Voir aussi

Concepts

Versioning des assemblys

Assemblys et exécution côte à côte

Autres ressources

Assemblys dans le Common Language Runtime