What is the difference between StackExchange.Redis and StackExchange.Redis.StrongName?

不羁岁月 提交于 2019-12-04 08:50:19

问题


While I was following Azure documentation for how to use Redis Cache in Azure Portal I noticed this note:

If you prefer to use a strong-named version of the StackExchange.Redis client library, choose StackExchange.Redis.StrongName; otherwise choose StackExchange.Redis.

What is the strong-named ? and what is the proc and cons ? How to decide if I need it or not in my application ?


回答1:


Do you need a strongly named Redis library? In all likelihood, especially if you never even encountered this term, the answer is no. But read on.

What is strongly named?

  • it's a .NET specific thing
  • you can choose to sign your assembly with a cryptographic key
  • this makes it possible to verify that you are actually loading/running something you expect to load/run
  • the "strong name" includes the cryptographic signature together with the the usual name, version and things like that.

Do you ever need strong names?

  • probably not unless you have specific reasons. Some of these may be:
  • historic (we used to sign our assemblies and why change now)
  • corporate policies
  • special circumstances such as something else you are using requires strong names (it used to be a requirement to have strong name if you wanted to add something to the GAC)
  • possibly security considerations

Is it a good idea to sign your assemblies?

  • there are a lot of divided opinions
  • very often strong names are a pain in so many ways with questionable benefits
  • it has been a trend lately to not use strong names unless you really must

Do you need a strongly named Redis library?

  • unless you decide or have to sign your own application which uses Redis library you don't
  • the strong names version of Redis library is identical to the other one
  • it exists solely for the reason to make lives of those who need to use strong names easier



回答2:


Aside from the signed vs unsigned assemblies argument, the RedisSessionStateProvider has a dependency on StackExchange.Redis.StrongName

So if you want to use RedisSessionStateProvider, choose the StrongName version unless you want to have two dependencies.

Update: As @Matei_Radu has pointed out, Microsoft.AspNet.SignalR.Redis also has a dependency on StackExchange.Redis.StrongName

You can only have a dependency on one (either signed or unsigned) in a single assembly, but if you have multiple projects, you might have dependencies on both. It may simplify things to keep only the signed version to avoid problems




回答3:


The strong name version is for developers who use strongly named assemblies in sharepoint and com+ development. The nuget package dev himself says that there is no simple answer for this question. Read the blog post here http://blog.marcgravell.com/2014/06/snk-we-need-to-talk.html



来源:https://stackoverflow.com/questions/28584950/what-is-the-difference-between-stackexchange-redis-and-stackexchange-redis-stron

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!