Cache de l’assembly global (gac)

Définition - Que signifie Global Assembly Cache (GAC)?

Le Global Assembly Cache (GAC) est un dossier dans le répertoire Windows pour stocker les assemblys .NET spécifiquement désignés pour être partagés par toutes les applications exécutées sur un système.

Le concept de GAC est le résultat de l'architecture .NET dont la conception répond au problème de "l'enfer DLL" qui existait dans COM (Component Object Model). Contrairement à COM, il n'est pas nécessaire que l'assembly dans GAC soit enregistré avant son utilisation. Chaque assembly est accessible globalement sans aucun conflit en identifiant son nom, sa version, son architecture, sa culture et sa clé publique.

Definir Tech explique Global Assembly Cache (GAC)

Le GAC est un cache de code à l'échelle de la machine utilisé pour l'exécution côte à côte des assemblys. Le GAC implémente la fonctionnalité de bibliothèque partagée où différentes applications réutilisent le code placé dans les fichiers situés dans un dossier commun. Dans .NET 4.0, son emplacement par défaut est:% windir% Microsoft.NET assembly

Le GAC est également le premier dans le chemin de recherche lors du chargement d'un assembly .NET. La seule exigence pour qu'un assembly soit déployé dans GAC est qu'il doit avoir un nom fort. Le CLR (Common Language Runtime) fait référence à un assembly basé sur une version spécifique mentionnée par l'application appelante. Le système de fichiers virtuel de GAC aide à récupérer l'assembly spécifique à la version.

Les deux outils liés à GAC sont GAC Tool (gacutil.exe) et Assembly Cache Viewer (shfusion.dll). L'outil GAC est utilisé pour vérifier l'existence d'un assemblage, enregistrer un assemblage partagé, afficher et manipuler le contenu de GAC, etc. Étant un dossier système, il nécessite des privilèges d'administrateur pour être utilisé. Assembly Cache Viewer permet d'afficher les détails (version, culture, etc.) associés aux assemblys contenus dans le cache.

GAC offre les avantages de la réutilisation du code, de la sécurité des fichiers (en raison de son installation dans le répertoire 'systemroot' et donc de la suppression uniquement par les utilisateurs avec des privilèges d'administrateur), de l'exécution côte à côte (permettant plusieurs versions d'un assembly conservées dans le même dossier ), etc.

L'un des inconvénients de l'utilisation de GAC est que la version de .NET Framework installée dans le système où GAC est utilisé et celle utilisée pour compiler l'application doivent être identiques. En outre, les noms forts ne peuvent pas être appliqués aux assemblys (comme le code tiers) dont dépendent les assemblys résidant dans le dossier GAC.