В чем разница между строками подключения и настройками приложения? - PullRequest
9 голосов
/ 16 июня 2010

В одном из приложений, о которых я говорил, строка подключения хранится в AppSettings! До сих пор я хранил соединение в элементе <connectionstring/>. Но как правильно?

Итак, мой вопрос: каковы различия между <connectionstrings> и <appsettings> в файле web.config и есть ли какие-либо конкретные причины, по которым я должен или не должен хранить строки подключения в настройках приложения? Существуют ли какие-либо правила / рекомендации, которым нужно следовать? Или это полностью выбор разработчика?

Ответы [ 6 ]

11 голосов
/ 16 июня 2010

Существует принципиальная разница между connectionString и appSettings:

Они ищут разные вещи.В .NET 2.0 и выше:

A connectionString объект - это узел XML, который имеет определенные атрибуты для установки;и семантически он ссылается на строку подключения к базе данных.

Например, connectionString выглядит следующим образом:

<connectionStrings>
    <clear/>
    <add name="LocalSqlServer"
          connectionString="Data Source=(local);Initial Catalog=aspnetdb;Integrated Security=True"
          providerName="System.Data.SqlClient" />
  </connectionStrings>

Вы заметите, что он имеет несколько различных атрибутов:

  • name
  • connectionString: внутри него есть конкретная строка, для нее требуется Initial Catalog, механизм безопасности (в данном случае Integrated Security
  • providerName

Принимая во внимание, что appSettings - это просто пользовательская пара ключ-значение, которая позволяет ... хорошо ... устанавливать настройки приложения. Это может быть что угодно:

<appSettings>
    <add key="Mom" value="Your"/>
    <add key="UseCache" value="True"/>
    <add key="MapsKey" value="1234567890-AA"/>
    <add key="SMTPServer" value="smtp.peterkellner.net"/>
</appSettings>

Во многих случаях было бы просто нечетным поместить connectionString в пару ключ-значение, например appSettings (семантически и программно), а также сделать ее болеетрудно зашифровать connectionString, когда вам нужно .

Более подробная информация об этом из этого сообщения в блоге .

6 голосов
/ 16 июня 2010

Насколько я знаю, это не имеет большого значения, кроме того, что оно находится в «правильном» месте - главное преимущество помещения строк подключения в их собственный раздел (вы шифруете строки подключения ..верно?) так что вы можете зашифровать этот раздел без шифрования всех настроек, которые вы можете изменить.

0 голосов
/ 24 июня 2014

Что касается развертывания, между ними есть одно существенное отличие.При импорте веб-пакетов в IIS:

  • Строки подключения автоматически включаются в диалоговое окно мастера для дальнейшей параметризации.
  • Настройки приложения по умолчанию не поддерживаются.Если вы действительно хотите это сделать, выполните действия, описанные в разделе «Пользовательские параметры - параметры приложения в файле web.config» Настройка параметров для развертывания веб-пакетов

Этоозначает, что когда дело доходит до развертывания, вам лучше поместить параметры среды (база данных, кэш, ключ / секрет AWS и т. д.) в строки подключения.Это обеспечит явное разграничение между средой разработки / разработки / разработки.

0 голосов
/ 26 июля 2013

Вы можете использовать раздел appSettings для совместного использования пользовательских настроек конфигурации приложений для проектов в .NET.

Как обмениваться пользовательскими настройками конфигурации приложений для проектов в .NET

0 голосов
/ 16 июня 2010

Кроме того, в IIS7 строки подключения можно поддерживать с помощью соответствующей администрации IIS7.

0 голосов
/ 16 июня 2010

Строки подключения, как правило, хранятся в элементе <connectionstring/> ... и являются хорошим руководством, поскольку они имеют правильное имя.

Иногда вы можете использовать сторонний элемент управления или пользовательский контроль, который ищет строку подключения включ в элементе <appsettings>.Это должно быть единственным исключением из директивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...