Меня действительно смущают различные параметры конфигурации для .Net конфигурации dll, веб-сайтов ASP.net и т. Д. В .Net v2 - особенно если учесть влияние файла конфигурации на пользовательский интерфейс / конечный пользователь цепочки .
Так, например, некоторые приложения, с которыми я работаю, используют настройки, к которым мы обращаемся:
string blah = AppLib.Properties.Settings.Default.TemplatePath;
Теперь эта опция кажется классной, потому что члены строго набраны, и я не смогу ввести имя свойства, которого нет в Visual Studio 2005 IDE. В итоге мы получаем строки вроде этого в App.Config исполняемого проекта командной строки:
<connectionStrings>
<add name="AppConnectionString" connectionString="XXXX" />
<add name="AppLib.Properties.Settings.AppConnectionString" connectionString="XXXX" />
</connectionStrings>
(Если у нас нет второго параметра, кто-то, выпускающий отладочную dll для live box, мог бы создать встроенную строку отладочного соединения - eek)
У нас также есть настройки, доступные следующим образом:
string blah = System.Configuration.ConfigurationManager.AppSettings["TemplatePath_PDF"];
Теперь они кажутся крутыми, потому что мы можем получить доступ к настройке из кода dll или кода exe / aspx, и все, что нам нужно в Web или App.config, это:
<appSettings>
<add key="TemplatePath_PDF" value="xxx"/>
</appSettings>
Однако значение курса может быть не задано в файлах конфигурации, или имя строки может быть напечатано с ошибкой, поэтому у нас другой набор проблем.
Итак ... если я правильно понимаю, прежние методы дают строгую типизацию, но плохое распределение значений между dll и другими проектами. Последний обеспечивает лучший обмен, но более слабый набор текста.
Мне кажется, что я что-то упускаю. На данный момент я даже не обеспокоен тем, что приложение может записывать значения в файлы конфигурации, шифровать или что-то в этом роде. Кроме того, я решил, что лучший способ хранить любые строки, не связанные с подключением, - это использовать в БД ... и затем следующее, что я должен сделать, это сохранить телефонные номера для текстовых сообщений в случае проблем с подключением к БД, чтобы они должны храниться вне БД!