web-dev-qa-db-fra.com

Quelle est la différence entre StackExchange.Redis et StackExchange.Redis.StrongName?

Pendant que je suivais Azure documentation pour savoir comment utiliser Redis Cache dans Azure Portal, j'ai remarqué cette note:

Si vous préférez utiliser une version avec nom fort de la bibliothèque cliente StackExchange.Redis, choisissez StackExchange.Redis.StrongName; sinon, choisissez StackExchange.Redis.

Quel est le nom fort? et quels sont les avantages et inconvénients? Comment décider si j'en ai besoin ou non dans ma candidature?

34
Mohamed Farrag

Avez-vous besoin d'une bibliothèque Redis fortement nommée? Selon toute vraisemblance, surtout si vous n'avez jamais rencontré ce terme, la réponse est non. Mais lisez la suite.

Qu'est-ce qui est fortement nommé?

  • c'est une chose spécifique à .NET
  • vous pouvez choisir de signer votre Assemblée avec une clé cryptographique
  • cela permet de vérifier que vous chargez/exécutez réellement quelque chose que vous prévoyez de charger/exécuter
  • le "nom fort" comprend la signature cryptographique ainsi que le nom, la version habituelle et des choses comme ça.

Avez-vous déjà besoin de noms forts?

  • probablement pas sauf si vous avez des raisons spécifiques. Certains d'entre eux peuvent être:
  • historique (nous avions l'habitude de signer nos assemblées et pourquoi changer maintenant)
  • politiques d'entreprise
  • des circonstances spéciales telles que quelque chose que vous utilisez nécessitent des noms forts (c'était une exigence d'avoir un nom fort si vous vouliez ajouter quelque chose au GAC)
  • éventuellement des considérations de sécurité

Est-ce une bonne idée de signer vos assemblées?

  • il y a beaucoup d'opinions divisées
  • très souvent, les noms forts sont une douleur à bien des égards avec des avantages discutables
  • il y a eu une tendance ces derniers temps à ne pas utiliser de noms forts à moins que vous ne deviez vraiment

vous avez-vous besoin d'une bibliothèque Redis fortement nommée?

  • sauf si vous décidez ou devez signer votre propre application qui utilise la bibliothèque Redis, vous ne le faites pas
  • la version des noms forts de la bibliothèque Redis est identique à l'autre
  • il existe uniquement pour la raison de faciliter la vie de ceux qui ont besoin d'utiliser des noms forts
19
Philip P.

Mis à part l'argument des assemblys signés vs non signés, le RedisSessionStateProvider a une dépendance sur StackExchange.Redis.StrongName

Donc, si vous souhaitez utiliser RedisSessionStateProvider, choisissez la version StrongName sauf si vous voulez avoir deux dépendances.

Mise à jour : Comme l'a souligné @Matei_Radu, Microsoft.AspNet.SignalR.Redis a également une dépendance sur StackExchange.Redis.StrongName

Vous ne pouvez avoir une dépendance que sur un (signé ou non signé) dans un seul assembly, mais si vous avez plusieurs projets, vous pouvez avoir des dépendances sur les deux. Cela peut simplifier les choses pour ne garder que la version signée pour éviter les problèmes

13
EdmundYeung99

La version avec nom fort est destinée aux développeurs qui utilisent des assemblys fortement nommés dans le développement sharepoint et com +. Le paquet nuget dev lui-même dit qu'il n'y a pas de réponse simple à cette question. Lisez le billet de blog ici http://blog.marcgravell.com/2014/06/snk-we-need-to-talk.html

1
Aravind