StackExchange.Redis和StackExchange.Redis.StrongName有什么区别?

时间:2015-02-18 13:35:04

标签: azure redis stackexchange.redis

当我在Azure documentation中关注如何在Azure门户中使用Redis缓存时,我注意到了这个注释:

  

如果您更喜欢使用StackExchange.Redis的强名称版本   客户端库,选择StackExchange.Redis.StrongName;除此以外   选择StackExchange.Redis。

什么是强名?什么是过程和缺点?如何在我的申请中决定我是否需要它?

3 个答案:

答案 0 :(得分:19)

您需要一个名字很强的Redis库吗?很可能,特别是如果你从未遇到过这个术语,答案是 no 。但请继续阅读。

什么是强名?

  • 这是一个特定于.NET的东西
  • 您可以选择使用加密密钥对程序集进行签名
  • 这使您可以验证您实际上正在加载/运行您希望加载/运行的内容
  • “强名称”包括加密签名以及通常的名称,版本和类似的东西。

您是否需要强名称?

    除非您有特殊原因,否则
  • 可能不会。其中一些可能是:
  • 历史性(我们曾经签署过我们的集会,现在为什么要改变)
  • 公司政策
  • 特殊情况,例如您正在使用的其他内容需要强名称(如果您想向GAC添加内容,则需要具有强名称)
  • 可能的安全考虑因素

签署程序集是个好主意吗?

  • 有很多分歧意见
  • 很多时候,强有力的名字在很多方面都会带来可疑的好处
  • 最近不使用强名称是一种趋势,除非你真的必须

需要一个强名称的Redis库吗?

  • 除非您决定或必须签署使用Redis库的自己的应用程序,否则
  • Redis库的强名称版本与另一个
  • 相同
  • 它的存在完全是为了让那些需要使用强名字的人的生命更轻松

答案 1 :(得分:13)

除了signed vs unsigned assemblies参数之外,RedisSessionStateProvider依赖于 StackExchange.Redis.StrongName

因此,如果您想使用RedisSessionStateProvider,请选择StrongName版本,除非您希望有两个依赖项。

更新:正如@Matei_Radu指出的那样,Microsoft.AspNet.SignalR.Redis也依赖于 StackExchange.Redis.StrongName

您只能在单个程序集中依赖一个(有符号或无符号),但如果您有多个项目,则可能依赖于两个项目。它可以简化事情,只保留签名版本以避免问题

答案 2 :(得分:1)

强名称版本适用于在sharepoint和com +开发中使用强命名程序集的开发人员。 nuget package dev自己说这个问题没有简单的答案。阅读此处的博客文章http://blog.marcgravell.com/2014/06/snk-we-need-to-talk.html