Índice:
- Definição - O que significa Global Assembly Cache (GAC)?
- Techopedia explica Global Assembly Cache (GAC)
Definição - O que significa Global Assembly Cache (GAC)?
O Global Assembly Cache (GAC) é uma pasta no diretório do Windows para armazenar os assemblies .NET especificamente designados para serem compartilhados por todos os aplicativos executados em um sistema.
O conceito do GAC é o resultado da arquitetura .NET cujo design trata do problema do "DLL hell" que existia no COM (Component Object Model). Diferente do COM, não é necessário registrar o assembly no GAC antes de usá-lo. Cada assembly é acessado globalmente sem nenhum conflito, identificando seu nome, versão, arquitetura, cultura e chave pública.
Techopedia explica Global Assembly Cache (GAC)
O GAC é um cache de código para toda a máquina usado para execução lado a lado de assemblies. O GAC implementa o recurso de biblioteca compartilhada, em que diferentes aplicativos reutilizam o código colocado nos arquivos localizados em uma pasta comum. No .NET 4.0, seu local padrão é:% windir% \ Microsoft.NET \ assembly
O GAC também é o primeiro no caminho de pesquisa ao carregar um assembly .NET. O único requisito para que um assembly seja implantado no GAC é que ele tenha um nome forte. O CLR (Common Language Runtime) refere-se a um assembly com base na versão específica mencionada pelo aplicativo de chamada. O sistema de arquivos virtual do GAC ajuda a buscar o assembly específico da versão.
As duas ferramentas relacionadas ao GAC são a GAC Tool (gacutil.exe) e o Assembly Cache Viewer (shfusion.dll). A ferramenta GAC é usada para verificar a existência de montagem, registrar uma montagem compartilhada, exibir e manipular o conteúdo do GAC, etc. Sendo uma pasta do sistema, ela requer privilégios de administrador. O Assembly Cache Viewer é usado para exibir os detalhes (versão, cultura etc.) associados aos assemblies contidos no cache.
O GAC oferece os benefícios da reutilização de código, segurança de arquivos (devido à instalação no diretório 'systemroot' e, portanto, a exclusão é apenas por usuários com privilégios de administrador), execução lado a lado (permitindo que várias versões de um assembly sejam mantidas na mesma pasta ) etc.
Uma das desvantagens do uso do GAC é que a versão do .NET Framework instalada no sistema em que o GAC é usado e a versão usada para compilar o aplicativo precisam ser as mesmas. Além disso, nomes fortes não podem ser aplicados a assemblies (como código de terceiros) dos quais dependem os assemblies que residem na pasta GAC.