В чем разница между StackExchange.Redis и StackExchange.Redis.StrongName?
Пока я следил за Azure documentation за использование Redis Cache в Azure Portal, я заметил это примечание:
Если вы предпочитаете использовать сильно названную версию StackExchange.Redis клиентская библиотека, выберите StackExchange.Redis.StrongName; в противном случае выберите StackExchange.Redis.
Что такое сильное имя? и что такое про и против? Как решить, нужно ли мне это или нет в моем приложении?
Ответы
Ответ 1
Вам нужна сильно названная библиотека Redis? По всей вероятности, особенно если вы даже не столкнулись с этим термином, ответ отрицательный. Но читайте дальше.
Что называется сильно?
- это особая вещь .NET.
- вы можете подписать свою сборку криптографическим ключом
- это позволяет проверить, что вы фактически загружаете/запускаете то, что вы ожидаете загрузить/запустить
- "сильное имя" включает криптографическую подпись вместе с обычным именем, версией и т.д.
Вам нужны сильные имена?
- возможно, если у вас нет конкретных причин. Некоторые из них могут быть:
- исторический (мы подписали наши собрания и почему изменились сейчас)
- корпоративные политики
- Особые обстоятельства, например, что-то другое, что вы используете, требуют сильных имен (это требование требовало наличия сильного имени, если вы хотите что-то добавить к GAC)
- возможно соображения безопасности
Хорошо ли подписывать ваши сборки?
- Есть много разделенных мнений
- очень часто сильные имена - это боль во многих отношениях с сомнительными преимуществами.
- В последнее время тенденция заключалась в том, чтобы не использовать сильные имена, если вы действительно не должны
Вам нужна сильно названная библиотека Redis?
- если вы не решите или не подпишете собственное приложение, которое использует библиотеку Redis, вы не
- сильная версия библиотеки Redis идентична другой.
- он существует исключительно для того, чтобы сделать жизнь тех, кто нуждается в сильных именах легче
Ответ 2
Помимо подписанного аргумента vs unsigned assemblys, RedisSessionStateProvider имеет зависимость от StackExchange.Redis.StrongName
Итак, если вы хотите использовать RedisSessionStateProvider, выберите версию StrongName, если вы не хотите иметь две зависимости.
Обновление. Как отметил @Matei_Radu, Microsoft.AspNet.SignalR.Redis также имеет зависимость от StackExchange.Redis. StrongName
У вас может быть только зависимость от одного (подписанного или неподписанного) в одной сборке, но если у вас несколько проектов, у вас могут быть зависимости от обоих. Это может упростить работу, чтобы сохранить только подписанную версию, чтобы избежать проблем.
Ответ 3
Сильная версия имени предназначена для разработчиков, которые используют сильно названные сборки в sharepoint и com + development. Сам пакет nuget dev говорит, что на этот вопрос нет простого ответа. Читайте сообщение в блоге здесь http://blog.marcgravell.com/2014/06/snk-we-need-to-talk.html