53 votes

Quels sont les avantages et les inconvénients de l'utilisation de la GAC?

Et en plus de cela, il y a des cas où l'on doit utiliser le cache d'assembly global ou où l'on ne peut pas l'utiliser?

48voto

lubos hasko Points 13669
  • Chargement des assemblages à partir de GAC signifie moins de frais généraux et de la sécurité que votre application sera toujours à la charge de bonne version de .NET-library
  • Vous ne devriez pas ngen assemblées qui sont à l'extérieur du GAC, car il n'y aura presque pas de gain de performance, dans de nombreux cas, la perte de performance.
  • Vous utilisez déjà GAC, parce que tous les standards .NET assemblées sont en fait dans le GAC et ngened (en cours d'installation).
  • À l'aide du GAC pour vos propres bibliothèques ajoute de la complexité dans le déploiement, je voudrais essayer d'éviter à tout prix.
  • Vos utilisateurs doivent être enregistrés à titre d'administrateurs lors de l'installation si vous voulez mettre quelque chose dans le GAC, tout à fait un problème pour de nombreux types d'applications.

Donc, pour résumer le tout, à commencer simple et si plus tard vous voir de grands gains de performance si vous mettez votre assembly dans le GAC et NGEN, allez-y, sinon, ne vous embêtez pas. GAC est plus approprié pour les cadres où il y a de l'attente pour la bibliothèque, pour être partagé entre plusieurs applications, dans 99% des cas, vous n'avez pas besoin.

21voto

Eduardo Molteni Points 23135

Avantage:

  • Un seul endroit pour mettre à jour vos assemblys
  • Vous utilisez un peu moins d'espace sur le disque dur

Inconvénient:

  • Si vous avez besoin de mettre à jour un site web unique, vous ne pouvez pas. Vous pouvez vous retrouver avec les autres sites dans le serveur cassé

Recommandation: Laisser le GAC MS et amis. La gigabyte est très bon marché maintenant.

18voto

Kev Points 60744

Le GAC peut également être utilisé par des assemblages qui nécessitent des autorisations élevées pour effectuer des opérations privilégiées, au nom de moins de code de confiance (par exemple, une confiance partielle ASP.NET d'application).

Par exemple, disons que vous avez une confiance partielle ASP.NET application qui en a besoin pour effectuer une tâche qui nécessiterait des privilèges élevés, c'est à dire Plein de Confiance. La solution est de mettre le code qui requiert des privilèges élevés dans une autre assemblée. L'assemblée est marqué avec le AllowPartiallyTrustedCallers attribut et la classe qui contient les privilégiés de la logique est marqué avec le PermissionSet attribut, quelque chose comme ceci: [PermissionSet(SecurityAction.Affirmer, sans restriction=true)].

Notre assemblée doit être donné un nom fort (signé) puis déployé dans le GAC.

Maintenant, notre confiance partielle d'application(s) pouvons utiliser la confiance de l'assemblée dans le GAC pour mener à bien un ensemble restreint d'opérations privilégiées sans perdre les avantages de la confiance partielle.

9voto

Espo Points 24318

Lorsque j'ai fait des recherches à ce sujet moi-même, j'ai trouvé que la Démystification de l' .NET Global Assembly Cache Par Jérémie Talkar m'a beaucoup aidé.

6voto

jonezy Points 1644

Je pense que l'un des plus grands avantages de l'utilisation du GAC, c'est que vous pouvez avoir plusieurs versions de la même assemblée enregistré et disponible pour vos applications. Personnellement, je n'aime pas comment elle limite le mouvement de machine à machine (je n'aime pas avoir à dire, consultez la source sur un nouveau VPC et de passer par un tas de mesures pour la faire courir parce que je enregistrer des trucs dans le GAC)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X