Опубликован: 24.01.2007 | Доступ: свободный | Студентов: 1253 / 82 | Оценка: 4.37 / 4.17 | Длительность: 14:27:00
ISBN: 978-5-94774-627-3
Лекция 2:

Изучение архитектуры настроек ASP.NET

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >

Изучение обработчиков разделов настроек

Итак, я уже описал, где следует вводить параметры, как эти параметры наследуются, как указать, к чему они относятся, и как их заблокировать. Теперь давайте рассмотрим, как используются настроечные параметры. Обработчики разделов настроек обрабатывают параметры, указанные в настроечных файлах, и делают их доступными для приложений. Обработчики разделов настроек – это классы, которые реализуют интерфейс IConfigurationSectionHandler. Данные классы интерпретируют и обрабатывают параметры из настроечного файла и возвращают объект конфигурации, основанный на этих параметрах.

Как уже было сказано ранее, обработчики разделов настроек сначала объявляются в configSections. Давайте снова посмотрим на объявление обработчика настроек.

<section name="appSettings"
type="System.Configuration.NameValueFileSectionHandler, System,
Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />

<appSettings>
<add key="MyPassword" value="Secret" />
<add key="ServerIP" value="192.168.31.1" />
</appSettings>

Это объявление раздела <appSettings> настроечного файла. Данный раздел используется для хранения пар имя/значение, к которым нужно получать доступ из любого файла приложения. Данное объявление указывает настроечному файлу на класс, который будет обрабатывать этот раздел. Вот пример раздела <appSettings>, который добавляет еще две пары имя/значение.

<appSettings>
<add key="MyPassword" value="Secret">
<add key="ServerIP" value="192.168.31.1">
</appSettings>

Теперь доступ к этим параметрам можно получить из приложений, что значительно облегчает отслеживание и изменение параметров, используемых на различных страницах или в приложениях. Мы знаем, где располагается объявление обработчика, но еще не увидели реального кода .NET Framework для объявления обработчика. Взглянуть на пример обработчика можно в исходном коде Microsoft Shared Source CLI Implementation (кодовое имя: Rotor), который является замечательной вещью.

Дополнительная информация. Microsoft Shared Source CLI Implementation, известная как Rotor, – это реализация с открытыми исходными текстами значительной части .NET Framework, доступная для разработчиков. Это не совсем тот код, который используется в .NET Framework, но он очень похож на него и выполняет те же функции. Однако между ними имеются многочисленные отличия, так как код Rotor разработан для того, чтобы быть наиболее переносимым и читаемым. За дополнительной информацией обратитесь по адресу http://msdn.microsoft.com/downloads/default.asp?url=/downloads/topic.asp?URL=/MSDN-FILES/028/000/123/topic.xml.

Следующий код – это обработчик раздела настроек для раздела <appSettings>, который называется NameValueFileSectionHandler. Я удалил из него код, не имеющий отношения к этому обсуждению.

//——————————————————––––––––––––———————————————
//  <copyright file="NameValueFileSectionHandler.cs" company="Microsoft">
//
//  Copyright (c) 2002 Microsoft Corporation  All rights reserved.
//  The use and distribution terms for this software are contained in the
//  file named license.txt, which can be found in the root of this
//  distribution. By using this software in any fashion, you are agreeing
//  to be bound by the terms of this license
//  You must not remove this notice, or any other, from this software.
//
//  </copyright>
//——————————————————––––––––––––———————————————
#if !LIB
namespace System.Configuration {
using System.IO;
using System.Xml;
public class NameValueFileSectionHandler :
IConfigurationSectionHandler {
public object Create(object parent, object configContext,
XmlNode section) {
object result = parent;
// parse XML
XmlNode fileAttribute = section.Attributes.RemoveNamedItem("file");
result = NameValueSectionHandler.CreateStatic(result, section);
if (fileAttribute != null && fileAttribute.Value.Length != 0) {
/* Удалено для краткости. Этот раздел будет срабатывать, если имеется
свойство file="", расположенное в разделе appSettings */
}
return result;
}
}
}
#endif
< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Геннадий Щербаков
Геннадий Щербаков

В начале года получил код dreamspark  H4RQ9-QJ6FD-YJWJT-P6FVF-HGXQZ. При  его вводе- сообщение что он просрочен.