![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Файлы конфигурации
Конфигурирование применяется для решения двух основных задач. Во-первых, параметры конфигурации позволяют настроить поведение CLR при выполнении кода приложения. Во-вторых, конфигурация может хранить пользовательские данные приложения. Платформа.NET предлагает унифицированный подход к конфигурированию, основанный на использовании конфигурационных XML-файлов. Существует один глобальный файл конфигурации с параметрами, относящимися к платформе в целом. Этот файл называется machine.config и располагается в каталоге установки платформы.NET. Любая сборка может иметь локальный конфигурационный файл. Он должен носить имя файла сборки с добавлением расширения.config и располагаться в одном каталоге со сборкой (то есть файл конфигурации для main.exe должен называться main.exe.config[22]). Параметры, описанные в локальных конфигурационных файлах, «накладываются» на параметры из файла machine.config. Проанализируем общую схему любого файла конфигурации. Корневым XML-элементом файла является элемент < configuration>. Он может включать следующие дочерние элементы: < configSections> – описывает разделы конфигурации (в том числе пользовательские); < appSettings> – пользовательские параметры конфигурации; < connectionStrings> – строки подключения к источникам данных; < startup> – параметры запуска CLR (поддерживаемые версии); < runtime> – параметры времени выполнения (регулируют способ загрузки сборок и работу сборщика мусора); < system.diagnostics> – совокупность диагностических параметров, которые задают способ отладки, перенаправляют сообщения отладки и т. д.; < system.net> – настройка параметров работы с сетью; < system.serviceModel> – настройка элементов технологии WCF; < system.web> – параметры конфигурации приложений ASP.NET. Рассмотрим способы описания в файле конфигурации пользовательских данных. В простейшем случае для этого используется раздел < appSettings>, который может содержать следующие элементы: < add key=" name" value=" the value" /> – добавляет новый ключ и значение в коллекцию пользовательских конфигурационных данных; < remove key=" name" /> – удаляет существующий ключ и значение из коллекции конфигурационных данных; < clear/> – очищает коллекцию конфигурационных данных. <? xml version=" 1.0" encoding=" utf-8"? > < configuration> < appSettings> < add key=" company" value=" Acme, Ltd" /> < add key=" year" value=" 2012" /> < /appSettings> < /configuration> Разработчик может создать собственный раздел конфигурационного файла. Такой раздел должен быть зарегистрирован в секции < configSections>. При регистрации раздела задаётся его обработчик – класс, который будет отвечать за превращение содержимого раздела в данные. В зависимости от типа хранимых данных можно воспользоваться одним из существующих обработчиков либо построить собственный обработчик. <? xml version=" 1.0" encoding=" utf-8"? > < configuration> < configSections> < section name=" custom" type=" Common.CustomConfig, Common" /> < /configSections>
<! -- пользовательская секция --> < custom> < copyright company=" Acme, Ltd" year=" 2012" /> < /custom> < /configuration> Если планируется использование собственного обработчика конфигурационного раздела, следует создать класс, производный от ConfigurationSection. В классе определяются открытые свойства, соответствующие XML-атрибутам или вложенным элементам конфигурации. Этим свойствам назначается специальный атрибут [ConfigurationProperty]. Следующий код показывает пример пользовательского обработчика CustomConfig. namespace Common { public class CustomConfig: ConfigurationSection { [ConfigurationProperty(" copyright", IsRequired = true)] public Element Copyright { get { return (Element) base[" copyright" ]; } } }
public class Element: ConfigurationElement { [ConfigurationProperty(" company", IsRequired = true)] public string Company { get { return (string) base[" company" ]; } set { base[" company" ] = value; } }
[ConfigurationProperty(" year", IsRequired = true)] public int Year { get { return (int) base[" year" ]; } set { base[" year" ] = value; } } } } Для программного доступа к конфигурационным данным текущего приложения используется статический класс ConfigurationManager из пространства имён System.Configuration[23] (сборка System.Configuration.dll). Класс имеет следующие элементы: 1. AppSettings – коллекция-словарь пользовательских параметров; 2. ConnectionStrings – словарь строк подключения к источникам данных; 3. GetSection() – извлекает указанный раздел конфигурации; 4. OpenExeConfiguration() – открывает файл конфигурации указанной сборки в виде объекта Configuration; 5. OpenMachineConfiguration() – открывает файл machine.config; 6. RefreshSection() – перечитывает указанный раздел конфигурации. Покажем пример работы с коллекцией данных < appSettings> и пользовательским разделом конфигурации при помощи ConfigurationManager: string name = ConfigurationManager.AppSettings[" company" ];
var s = (CustomConfig) ConfigurationManager.GetSection(" custom"); string company = s.Copyright.Company; int year = s.Copyright.Year; Console.WriteLine(" Copyright © {0} by {1}", year, company); Метод ConfigurationManager.OpenExeConfiguration() позволяет загрузить конфигурацию заданной сборки в виде объекта Configuration. Это класс содержит коллекции, описывающие секции конфигурационного файла, а также методы для записи конфигурационного файла. // получаем конфигурацию сборки common.exe var cfg = ConfigurationManager.OpenExeConfiguration(" common.exe");
// находим секцию и изменяем данные в ней var section = (CustomConfig) cfg.Sections[" custom" ]; section.Copyright.Year = 2013;
// обновляем конфигурацию cfg.Save(); При работе в Visual Studio настройки приложения можно создать в окне свойств проекта (Project | Properties | Settings). Для каждого параметра указывается имя, тип и область видимости (глобальная или локальная для конкретного пользователя). Рис. 12. Редактирование параметров приложения. Visual Studio генерирует для работы с настройками класс Settings, размещённый в подпространстве имён Properties. Параметры настройки доступны через свойство Settings.Default. Если у параметра локальная область видимости, его можно не только прочитать, но и изменить, а затем сохранить. Console.WriteLine(Settings.Default.Company); Console.WriteLine(Settings.Default.Year); Settings.Default.Year = 2013; Settings.Default.Save();
|