Enterprise Library 2.0

Корпоративные приложения из функциональных блоков

Алексей Федоров

Enterprise Library 2.0

Основные изменения в Enterprise Library 2.0

Блок кэширования

Блок криптографии

Блок доступа к данным

Блок обработки исключений

Блок протоколирования

Блок безопасности

Дальнейшие планы

 

Об авторе. Алексей Федоров — сотрудник отдела стратегических технологий российского представительства компании Microsoft (alexeif@microsoft.com).

Осенью прошлого года (см. № 9’2005) мы ознакомились с библиотекой Enterprise Library 1.0, представляющей собой дальнейшее развитие функциональных блоков, предназначенных для использования в приложениях, создаваемых на платформе Microsoft .NET. В январе была выпущена обновленная версия библиотеки — Enterprise Library 2.0, построенная на основе Microsoft .NET Framework 2.0 и ориентированная на применение в средствах разработки семейства Microsoft Visual Studio 2005. В этом обзоре мы представим вам главные новинки и изменения в Enterprise Library 2.0, основные сценарии использования функциональных блоков, входящих в эту библиотеку, а также расскажем о дальнейших планах Microsoft по развитию функциональных блоков.

Enterprise Library 2.0

В обновленной версии Enterprise Library содержатся следующие функциональные блоки:

  • блок кэширования (Caching Application Block) — используется для реализации локального кэша;
  • блок криптографии (Cryptography Application Block) — служит для реализации алгоритмов хеширования и симметрического шифрования;
  • блок доступа к данным (Data Access Application Block) — используется для реализации функциональности, связанной с доступом к базам данных;
  • блок обработки исключений (Exception Handling Application Block) — применяется для реализации унифицированной обработки исключений на всех уровнях приложения;
  • блок протоколирования (Logging Application Block) — используется для реализации механизмов ведения протоколов;
  • блок безопасности (Security Application Block) — реализует механизмы авторизации и безопасного кэширования.

Кроме того, в Enterprise Library входит ядро, отвечающее за конфигурацию, управление и создание объектов, используемых в функциональных блоках (ObjectBuilder). На рисунке представлена структура Enterprise Library 2.0 — ядро библиотеки, функциональные блоки, зависимости между ними, а также возможные точки расширения за счет использования дополнительных библиотек-провайдеров.

Основные сценарии использования Enterprise Library:

  • реализация типовых нефункциональных требований к широкому спектру корпоративных приложений, создаваемых на платформе Microsoft .NET;
  • применение в качестве основы для создания пользовательских библиотек. В этом случае разработчики могут использовать точки расширения, реализованные в каждом функциональном блоке, и расширить функциональность стандартных блоков за счет новых библиотек-провайдеров. Поскольку Enterprise Library поставляется с полными исходными текстами, то можно расширять функциональность блоков и на более низком уровне. Сюда же относится создание новых функциональных блоков на основе реализованной в библиотеке инфраструктуры;
  • отсутствие необходимости использования всех функциональных блоков позволяет включать в приложение только те блоки, которые требуются для решения конкретных задач;
  • наличие исходного кода всей библиотеки дает возможность включать некоторые функциональные фрагменты в пользовательские библиотеки;
  • применение Enterprise Library в качестве основы для изучения архитектурных принципов, дизайна корпоративных приложений, создаваемых на платформе Microsoft .NET, а также в качестве примеров реализации функциональности согласно рекомендованным практикам написания кода.

Enterprise Library предназначена для использования на компьютерах, работающих под управлением операционных систем Microsoft Windows 2000, Windows XP Professional, Windows Server 2003. Библиотека Enterprise Library реализована на основе Microsoft .NET Framework 2.0 и может использоваться из любого издания Microsoft Visual Studio 2005 (кроме издания Express). Помимо исходного кода, в комплект поставки Enterprise Library входит код для модульного тестирования (Unit Test), при этом для выполнения модульного тестирования следует использовать Visual Studio 2005 Team Edition или NUnit 2.2.

 

Структура Enterprise Library 2.0

Структура Enterprise Library 2.0

В начало В начало

Основные изменения в Enterprise Library 2.0

Новая версия Enterprise Library подверглась редизайну и частично отличается от предыдущих версий. Главное изменение заключается в том, что данная версия целиком базируется на .NET Framework 2.0. Так, механизмы конфигурации теперь используют пространство имен System.Configuration из библиотеки классов .NET Framework 2.0, а блок протоколирования базируется на пространстве имен System.Diagnostics. Произошло много внутренних изменений в функциональных блоках, но большинство интерфейсов остались такими же, за исключением небольшого количества интерфейсов в отдельных функциональных блоках.

Как видно из приведенного рисунка, из состава библиотеки исключен блок конфигурации (Configuration Application Block) — вместо этого ядро библиотеки использует функциональность, предоставляемую пространством имен System.Configuration из библиотеки классов .NET Framework 2.0. Все функциональные блоки, входящие в состав Enterprise Library, теперь используют механизмы конфигурации, предоставляемые ядром библиотеки. В состав Enterprise Library по-прежнему входят некоторые вспомогательные конфигурационные классы, компоненты design-time, а также конфигурационная консоль — Enterprise Library Configuration Console.

В предыдущих версиях Enterprise Library функциональные блоки могли использовать счетчики производительности, Windows Management Instrumentation (WMI) и протоколы событий. В версии 2.0 подсистема управления была улучшена: теперь можно использовать механизмы конфигурации для задания используемого типа управления, а по умолчанию все механизмы отключены и имеется возможность развертывания функциональных блоков командой xcopy даже в конфигурациях с минимальными пользовательскими правами (например, ASP .NET).

За счет переноса механизмов конфигурации в ядро библиотеки все функциональные блоки поддерживают единые механизмы настройки, которые, в частности, позволяют определять, как блоки будут работать в составе вашего приложения, задавать подключаемые механизмы расширения и т.п. Использование пространства имен System.Configuration из библиотеки классов .NET Framework 2.0 позволяет, например, считывать и записывать более сложные, иерархические конфигурации, обеспечивает автоматическую сериализацию и десериализацию между конфигурационными классами и XML с помощью классов ConfigurationSection и ConfigurationElement. Следует иметь в виду, что стандартизация на базе пространства имен System.Configuration делает невозможным хранение конфигурационной информации не в XML-файлах, а также мониторинг изменений конфигурации — в версии 2.0 это возможно только через блок функционирования.

Кроме пространства имен System.Configuration, в Enterprise Library 2.0 реализован ряд вспомогательных классов, которые обеспечивают использование каждым функциональным блоком класса ConfigurationSections для сохранения информации в конфигурационных файлах app.config и web.config (эта функциональность доступна по умолчанию). Поддерживаются все возможности System.Configuration, включая шифрование и применение внешних файлов.

Как мы уже отмечали, в Enterprise Library 2.0 включена новая подсистема ObjectBuilder, которая реализована в пространстве имен Microsoft.Practices.ObjectBuilder и отвечает за создание и удаление экземпляров объектов. На уровне Enterprise Library подсистема ObjectBuilder используется и для вставки конфигурационных данных в классы функциональных блоков, а также для связи управляющих классов с функциональными блоками. Наличие данной подсистемы значительно облегчает использование функциональных блоков, включенных в состав библиотеки, — как с конфигурационными файлами, так и без них. Следует подчеркнуть, что для полноценного использования Enterprise Library не требуется специального изучения принципов работы подсистемы ObjectBuilder.

А теперь более подробно рассмотрим функциональные блоки, входящие в состав новой версии.

В начало В начало

Блок кэширования

Б лок кэширования служит для реализации локального кэша. Поддерживается кэш в памяти и (опционально) в хранилище данных, которое может быть либо хранилищем, управляемым через блок доступа к данным (Data Access Application Block), либо изолированным хранилищем (Isolated Storage). Данный функциональный блок предоставляет механизмы для извлечения, добавления и удаления данных из кэша. Время хранения данных задается через соответствующие конфигурационные настройки.

Использование локального кэша может повысить производительность приложений за счет того, что данные хранятся максимально близко к потребителю, а потому нет необходимости в их создании, обработке и передаче. Также решаются вопросы, связанные с масштабируемостью приложений: хранение информации в кэше позволит сохранить ресурсы и повысить масштабируемость приложения. Кроме того, использование локального кэша увеличивает доступность приложений.

Локальный кэш поддерживается для одного домена приложения, вследствие чего данный функциональный блок не обеспечивает реализацию кэша, разделяемого между доменами.

Реализованный в версии 2.0 блок кэширования полностью совместим с аналогичным функциональным блоком из предыдущих версий Enterprise Library, поэтому не требуется никаких изменений в коде, использующем данный функциональный блок.

В начало В начало

Блок криптографии

Данный блок облегчает решение задач, связанных с криптографией — шифрование информации, создание хеш-ключей по данным, сравнение хеш-значений для проверки целостности данных. Блок криптографии абстрагирует код приложения от криптопровайдеров: при необходимости криптопровайдеры могут быть изменены в конфигурационных файлах без изменения кода приложения и без повторной компиляции.

Блок криптографии поддерживает только симметричные алгоритмы, то есть такие, в которых используется один и тот же ключ для шифрования и расшифровки. Асимметричные алгоритмы на основе публичных ключей, когда один ключ используется для шифрования, другой — для расшифровки, не поддерживаются.

Внешние интерфейсы этого функционального блока остались такими же, что и в предыдущих версиях Enterprise Library, поэтому нет необходимости изменять код, использующий данный функциональный блок.

В начало В начало

Блок доступа к данным

Б лок доступа к данным содержит набор таких вспомогательных функций, как управление соединениями, создание и кэширование параметров хранимых процедур и т.п. Этот блок базируется на принципе применения абстрактных провайдеров данных, реализованном в ADO .NET 2.0 на уровне классов DbCommand и DbConnection, и использует ее для получения параметров и преобразования типов. Благодаря этому приложения могут быть перенесены из одного хранилища данных в другое без модификации исходного кода. В состав данного блока также включены классы, обладающие функциональностью, специфичной для Microsoft SQL Server 2000 и выше, а также Oracle 9i. Еще одна возможность, реализованная в блоке доступа к данным, — обращение к базе данных по имени строки соединения. Код приложения может создать именованный экземпляр базы данных и передать этот параметр методу DatabaseFactory.CreateDatabase. Каждая именованная база данных имеет информацию о соединении, хранимую в конфигурационном файле. Изменяя эту информацию, разработчики могут использовать приложения с различными конфигурациями баз данных без перекомпиляции самого приложения.

К новшествам, появившимся в версии 2.0, следует отнести возможность создавать экземпляр класса непосредственно на базе класса Database, используя конструктор и предоставляя строку соединения с базой данных (в случае использования класса GenericDatabase также требуется указание типа провайдера).

В начало В начало

Блок обработки исключений

Данный блок служит для реализации унифицированной обработки исключений на всех уровнях приложения. За счет внешней (по отношению к приложению) конфигурации разработчики и администраторы могут выбрать способ обработки исключений. Блок обработки исключений предоставляет механизмы для протоколирования исключений (Logging Handler), для замены одного исключения другим (Replace Handler), для сохранения контекстной информации посредством помещения одного исключения внутрь другого (Wrap Handler).

Внешние интерфейсы функционального блока остались такими же, как и в предыдущих версиях Enterprise Library; поэтому никаких изменений в коде, использующем данный функциональный блок, не требуется.

В начало В начало

Блок протоколирования

Етот блок используется в случае необходимости реализации механизмов ведения протоколов. Разработчики могут использовать блок протоколирования для записи информации в Event Log (штатный протокол событий на уровне операционной системы), для передачи данных по электронной почте (EmailTraceListener), сохранения данных в базе данных (DatabaseTraceListener), в очереди сообщений (MsmqTraceListener) и в текстовом файле (TextWriterTraceListener), для генерации WMI-события (WMITraceListener) или в других местах, задаваемых через точки расширения данного функционального блока (CustomTraceListener).

Из новшеств, появившихся во второй версии данного функционального блока, можно назвать:

  • использование пространства имен System.Diagnostics из библиотеки классов .NET Framework 2.0. В частности, данный блок использует классы TraceListener и CorrelationManager;
  • упрощение модели за счет использования класса TraceListener;
  • способность объекта LogEntry принадлежать более чем к одной категории;
  • возможность создания пользовательских фильтров, расширяющих функциональность стандартных фильтров, реализованных в данном блоке;
  • возможность проверять фильтры на предмет протоколирования определенных событий.

Поскольку блок протоколирования значительно изменился, возникает вероятность того, что придется изменить код приложения в тех местах, где используется функциональность данного блока.

В начало В начало

Блок безопасности

Данный функциональный блок реализует механизмы авторизации и безопасного кэширования данных, связанных с авторизацией и аутентификацией. Функциональность блока безопасности целиком базируется на библиотеке классов .NET Framework 2.0. По сравнению с предыдущими версиями, данный блок претерпел существенные изменения — интерфейсы, аутентификационные провайдеры, роли и профили заменены на соответствующие классы библиотеки .NET Framework 2.0. Эквивалентная функциональность предоставляется новым классом System.Web.Security.Membership и пространством имен System.Web.Profile.

Принимая во внимание описанные изменения, вполне возможно, что вам потребуется изменить код приложения.

В начало В начало

Дальнейшие планы

На момент написания данного обзора подразделение Microsoft, занимающееся разработкой Enterprise Library, не планировало новых выпусков библиотеки в течение всего текущего года. В планах компании по развитию библиотеки — использование обновленных версий платформенных технологий (WinFX), механизмов Language Integrated Query (LINQ), а также реализация руководств по совместному использованию функциональных блоков и подготовка законченных сценариев такого использования. Помимо этого в рамках проекта Smart Client Baseline Architecture Toolkit (о нем мы расскажем в ближайших номерах) идет работа над использованием архитектуры, заложенной в ядре Enterprise Library (в частности, ObjectBuilder), при создании новых функциональных блоков.

По мере реализации планов развития Enterprise Library информация об этом будет появляться на сайте http://www.gotdotnet.com в разделе, посвященном Enterprise Library.

КомпьютерПресс 3'2006

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует