16+
ComputerPrice
НА ГЛАВНУЮ СТАТЬИ НОВОСТИ О НАС




Яндекс цитирования


Версия для печати

Модуль поиска не установлен.

Enterprise Library - набор из функциональных блоков для специалистов по разработке приложений

01.04.2007

Тихон Баранов

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

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

Тем не менее, специалистам по разработке приложений зачастую нужно решить определенный круг задач, которые не имеют прямого отношения к функциональным требованиям, но повторяются из проекта в проект. В данном случае платформа не всегда готова напрямую дать способы решения таких задач без написания большого по объему ручного кода. Специалисты компании Microsoft предлагают выйти из положения таким способом: загрузить с сайта Microsoft по адресу: http://msdn.microsoft.com/practices/guidetype/AppBlocks/ комплект функциональных блоков - Microsoft Application Building Blocks for .NET. Среди этих функциональных блоков можно найти повторно используемые, расширяемые и изменяемые компоненты, предоставляющие механизмы для решения задач. Тех задач, которые связаны с протоколированием, кэшированием, управлением конфигурациями, управлением процессами на уровне пользовательского интерфейса, агрегации сервисов и т.п.

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

Итак, руководимые данной мотивацией, в январе 2005 года, специалисты компании Microsoft выпустили Enterprise Library 1.0, и она стала дальнейшим шагом в развитии функциональных блоков для использования в приложениях, которые создаются на платформе Microsoft .NET.

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

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

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

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

В-пятых, возможно применение 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 коснулись не только дизайна, главное изменение заключается в том, что новая версия полностью принадлежит .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.Con-figuration в Enterprise Library 2.0 добавлен ряд вспомогательных классов. Они обеспечивают использование каждым функциональным блоком класса ConfigurationSections для сохранения информации в конфигурационных файлах app.config и web.config (использование этой функции доступно по умолчанию). Поддерживаются все возможности System.Configuration, в том числе и шифрование, и использование внешних файлов.

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

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

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

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

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

Кроме того, находится ответ на вопрос масштабируемости приложений. Сохранение ресурсов и повышение масштабируемости - вот плюсы хранения информации в кэше. Добавим к этому и увеличение доступности приложений.

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

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

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

Данный блок облегчает решение задач, связанных с криптографией, - шифрование информации, создание хеш-ключей по данным, сравнение хеш-значений для проверки целостности данных. Блок криптографии абстрагирует код приложения от криптопровайдеров: при необходимости криптопровайдеры (криптопровайдер - независимый программный модуль, интегрированный в MS Windows и содержащий библиотеку криптографических функций со стандартизованным интерфейсом, - выполняет такие криптографические функции, как формирование/проверка электронной цифровой подписи (ЭЦП), шифрование информации. Также он выполняет роль хранилища для ключей всех типов) могут быть изменены в конфигурационных файлах без изменения кода приложения и без повторной компиляции.

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

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

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

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

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

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

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

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

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

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

Что нового прибавилось во второй версии этого блока?

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

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

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

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

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

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

В статье использованы материалы сайта http://www.microsoft.com и конференции "Платформа 2007. Определяя будущее".



статьи
статьи
 / 
новости
новости
 / 
контакты
контакты