У нашей компании есть несколько приложений - как веб-, так и консольных / windows - все они подключаются к одному и тому же набору баз данных. Я пытаюсь найти наилучший способ хранения / доступа / управления различными строками подключения к базе данных, чтобы их можно было использовать во всех приложениях.
В настоящее время у нас есть строки подключения в файлах machine.config на всех наших серверах. Хотя это устраняет необходимость иметь эти строки подключения в конфигурационном файле каждого приложения, мы все равно должны иметь один и тот же блок настроек на каждом сервере, и у каждого сервера есть 4 разные версии, в которые мы должны включить их (32- / 64-битные , 2.0 и 4.0 фреймворки). Кроме того, каждый сервер имеет свою собственную среду (dev, QA, production), поэтому эти параметры должны храниться отдельно. Это складывается, и становится трудно управлять, когда необходимы изменения.
В идеале было бы неплохо иметь центральное расположение на каждом сервере - может быть, в сети - где бы эти строки подключения к базе данных (и, возможно, другая информация) хранились. Я рассмотрел несколько вариантов, но у каждого из них есть ограничения:
файл configSource и appSettings
Это кажется хорошим, но работает только на уровне app.config и web.config и не поддерживает абсолютные (или UNC) пути. Если бы мы могли сделать так, чтобы это указывало на центральное расположение на сервере, то это может сработать. Но, насколько я понимаю, он должен находиться в расположении ниже корня приложения и должен быть относительным путем. Я читал об использовании ссылки на файл, и это сработало бы, если бы мы развернули каждое приложение после изменения, но мы не хотим этого делать - мы хотим иметь возможность развернуть файл в одном месте (на сервер, наихудший случай) и будет сделано.
linkedConfiguration
Теоретически это звучит так, как мы хотим. Но я нахожу очень небольшую поддержку для него, поэтому мне интересно, если это устарело, не работает, как я думаю, или не рекомендуется.
Как другие могут делиться значениями конфигурации, подобными этим, и есть ли способ использовать какой-либо из перечисленных выше способов для выполнения того, что я описал? Каковы лучшие практики для нашей ситуации?
Заранее спасибо.