Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Файлы конфигурации






Конфигурирование применяется для решения двух основных задач. Во-первых, параметры конфигурации позволяют настроить поведение 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();


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал