Опубликовано руководство по Microsoft Enterprise Library на русском языке

Буквально на днях было опубликовано руководство по работе с Microsoft Enterprise Library на русском языке. Задачей данного руководства является поэтапно показать, как следует применять .NET для разработки корпоративных приложений. Enterprise Library создана группой patterns & practices и представляет собой коллекцию компонентов, пригодных для многократного использования, каждый из которых предназначен для определенной сквозной функциональности, будь то ведение журнала системы или проверка данных, или обработка исключений. Использование многих из них не представляет никакого труда. Эти компоненты не зависят от архитектуры и могут применяться во множестве разных контекстов.

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

Зачем нужно руководство по Enterprise Library

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

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

Еще один упор данное руководство делает на простые в настройке, тестировании и обслуживании дизайны программного обеспечения. Enterprise Library имеет гибкую подсистему конфигурации, которой можно управлять или из внешних файлов конфигурации, или программно, или обоими способами. Следуя собственному примеру, Enterprise Library имеет слабосвязанный дизайн. Она поддерживает ключевые принципы проектирования, а именно принцип разделения ответственности, принцип единственности ответственности, принцип наименьшего знания и принцип DRY («Don’t Repeat Yourself» или «не повторяй себя»). Но после всего вышесказанного не ожидайте, что это конкретное руководство является всеобъемлющим справочником по шаблонам проектирования. Отнюдь нет. В нем предоставлен именно тот объем информации, который необходим для демонстрации основных шаблонов, используемых с Enterprise Library. Увидев и поняв их, попытайтесь экстраполировать их на другие проблемы, контексты, сценарии.

Какие возможности предоставляет библиотека Enterprise Library

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

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

  1. Кэширование. Функциональный блок кэширования позволяет включить локальный кэш в приложения, использующие кэш в памяти, и, при необходимости, базу данных или изолированное резервное хранилище. Блок имеет все функциональные возможности, необходимые для извлечения, добавления и удаления кэшированных данных и поддерживает настраиваемые правила времени прекращения действия и очистки. Также можно расширить его путем создания собственных подключаемых поставщиков или с помощью сторонних поставщиков; например, для поддержки распределенного кэширования и других возможностей. Во многих сценариях приложений кэширование может значительно повысить производительность и эффективность.
  2. Управление учетными данными. Функциональный блок безопасности позволяет легко реализовывать общие средства авторизации, таких как кэширование данных авторизации и проверки подлинности пользователя и интеграция с помощью средств безопасности Microsoft .NET Framework.
  3. Доступ к данным. Функциональный блок доступа данным упрощает многие часто встречающиеся задачи доступа к данным, например чтение данных для отображения, передача данных через уровни приложения и отправка измененных данных в систему базы данных. Этот блок имеет поддержку хранимых процедур и встроенного SQL, может предоставлять данные в виде последовательности объектов для запросов со стороны клиента и предоставляет доступ к наиболее часто используемым возможностям ADO.NET посредством простых в использовании классов.
  4. Шифрование. Функциональный блок шифрования упрощает внедрение криптографических функциональных возможностей, таких как шифрование и расшифровка данных, создание хэша на основе данных и сравнение хэш-значений для проверки, что данные не были изменены. Использование этого блока помогает избежать стандартных ошибок при разработке пользовательских механизмов, которые могут создать слабые места в системе безопасности.
  5. Обработка исключений. Функциональный блок обработки исключений позволяет легко и быстро разрабатывать и реализовывать согласованную стратегию управления исключениями, возникающими в различных слоях архитектуры приложения. С помощью этого блока можно вносить в журнал записи об исключениях, скрывать конфиденциальные сведения, заменяя исходное исключение другим исключением, и поддерживать контекстные сведения об исключении путем заключения исходного исключения в другое исключение.
  6. Протоколирование. Функциональный блок протоколирования упрощает реализацию общих функций протоколирования, таких как запись сведений в журнал событий Windows, сообщения электронной почты, базу данных, очереди сообщений Windows, текстовый файл, в событие инструментария управления Windows (WMI) или в произвольное местоположение.
  7. Проверка. Функциональный блок проверки предоставляет разнообразные функции для реализации структурированных и простых в обслуживании механизмов проверки с помощью атрибутов и наборов правил и интеграции с большинством типов технологий интерфейсов приложений.

Почему рекомендуется использовать Enterprise Library

Enterprise Library предоставляет полный набор функций, которые могут помочь в реализации сквозной функциональности посредством набора компонентов с возможностью многократного использования и основных функциональных возможностей. Конечно же, как и многие разработчики, вы может стать жертвой cиндрома «Не-Изобретено-Здесь". Однако, если говорить серьезно, разве время разработки не является достаточной причиной, чтобы каждый разработчик команды не пытался создавать собственную инфраструктуру протоколирования? Общеизвестно, что использование библиотеки стандартных и проверенных фрагментов кода и компонентов может сократить время разработки, свести к минимуму затраты, сократить использование ценных ресурсов тестирования и уменьшить общие усилия при обслуживании.