Рекомендации: как хранить настройки в C # (формат / тип)? - PullRequest
11 голосов
/ 11 февраля 2009

Теперь мне любопытно, каковы возможности сохранения / загрузки настроек в .net. Например, мне нужно сохранить имя пользователя / пароль для разных БД и т. Д., Также мне нужно сохранить некоторые параметры и т. Д.

Я хотел создать класс [Seriazable] и сохранить его в файл ...

Что вы можете предложить? какие есть возможности в .net и т. д.

Ответы [ 5 ]

17 голосов
/ 11 февраля 2009

.NET Framework предоставляет некоторые механизмы для хранения и загрузки настроек приложения и / или пользователя. См. " MSDN: Использование настроек в C # " для ознакомления с основными сведениями.

Чтобы зашифровать некоторые важные данные в файлах конфигурации, вы также можете использовать некоторые стандартные функции .NET Framework. Для краткого введения ознакомьтесь с « Шифрование информации о конфигурации с использованием защищенной конфигурации » и « Шифрование паролей в файле .NET app.config * ».

4 голосов
/ 11 февраля 2009

Что ж, самый распространенный способ хранения и загрузки настроек - это использовать какие-то данные XML, и создание класса [Serializable] и вывод сериализованного класса в файл XML будет работать, но вы должны сохранить следующие вещи в ум:

  1. У вас не будет никакого контроля над входными данными - поскольку XML-файл можно редактировать вне вашего приложения, возможно загрузить совершенно бессмысленные данные
  2. Вы захотите иметь нормальные значения по умолчанию, когда узлы отсутствуют в XML. Это может быть вызвано ручным редактированием или загрузкой старой версии вашего класса в более новую версию.
  3. Лично я очень неохотно хранил бы любые пароли в файле конфигурации где-либо, не используя какой-либо алгоритм асимметричного шифрования. Если я найду программу, которая хранит мои пароли в виде простого текста в файле XML, я перестану использовать эту программу.
2 голосов
/ 11 февраля 2009

Если вы хотите сохранить параметры конфигурации приложения , вы можете использовать «AppSettings» в файле App.Config или Web.Config в зависимости от того, является ли это Windows или веб-приложением. Я считаю, что синтаксис для чтения значений конфигурации является

string configValue = Configuration.AppSettings["ConfigValueName"];

Файл конфигурации будет выглядеть так

<configuration> 
  <appSettings>
    <add key="ConfigValueName" value="ABC"/>
  </appSettings>
</configuration>

Возможно, с большим количеством других вещей.

Если вам нужно хранить информацию о пользователях или других повторяющихся объектах в вашей системе, вам нужно будет создать базу данных и написать код для сохранения / чтения данных в / из базы данных.

Вы можете сделать сериализуемый класс и автоматически сериализовать его в XML или Binary, ИЛИ вы можете использовать базу данных SQL. Существует множество технологий .net для доступа к базам данных, просто посмотрите ADO.net, LINQ и Entity Framework.

1 голос
/ 11 февраля 2009

Вы можете использовать файлы ресурсов для менее конфиденциальной информации. Для имен пользователей / паролей вам нужно использовать зашифрованный текстовый файл или использовать CSPs .

0 голосов
/ 25 июля 2018

Я рекомендую хранить там, где вам нужно, App.Config, файл Ini ... Тогда используйте библиотеку Config.Net : Всесторонняя простая в использовании и мощная библиотека конфигурации .NET, полностью покрыты юнит-тестами и протестированы в естественных условиях на тысячах серверов и приложений . Нашел его в GitHub: https://github.com/aloneguid/config

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

...