Чтобы подключиться к базе данных, вам потребуется либо жестко закодировать, либо настроить с помощью app.config или другими способами информацию о соединении.
Тогда, насколько я смог выяснить, нет возможности использовать возможности конфигурации .net framework, кроме как через файлы. Но можно загрузить определенный файл методом ConfigurationManager.OpenMappedExeConfiguration
.
Это должно открыть дверь, поскольку вы можете сохранить файл конфигурации в поле varbinary (max) на SQL-сервере. Когда ваши приложения подключаются к базе данных sql server, им нужно только извлечь конфигурацию, сохранить ее во временный файл и использовать вышеуказанный метод для ее загрузки.
Я собираюсь проверить это, так как у меня также есть причины запихать это в базу данных. Во-первых, более чем одно приложение будет зависеть от одной и той же конфигурации, и поэтому я хочу иметь только одно. Не только для простоты обслуживания, но также и для обеспечения синхронизации конфигураций приложений, так как трудно предсказать поведение, если они имеют на первый взгляд допустимые, но разные конфигурации (скажем, приложение 1 подключается к БД, а приложение 2 подключается к другой экземпляр БД, т.е. та же схема, но другая база данных).
Вторая причина для меня заключается в том, что система работает за пределами Windows / Unix, и у нас нет средств для аутентификации на основе каталогов в мире Unix. Я не могу хранить учетные данные в виде простого текста. И хотя я мог бы зашифровать конфигурацию, это может привести к появлению червей с операционной стороны: кто может ее расшифровать? Кто может создать новую конфигурацию (зашифрованную) для использования приложением? Кто может решить, кто может делать эти вещи? Чем хуже ты думаешь об этом, тем хуже. :) Если поместить этот материал в базу данных MSSQL, проблемы исчезнут. Мы можем использовать проверку подлинности Windows, чтобы контролировать, кто может читать / изменять базу данных, и шифрование становится вопросом DBA, прозрачным для моих приложений.
Надеемся, что этот метод извлечения в файл и OpenMappedExeConfiguration
позволит достичь этих целей.