Exception Handling как использовать и расширять Леонид Люблинский Enterprise Library 2.0
Пара слов о структуре Специализированные блоки Caching Cryptography Security Data Access Logging Exception Handling Общие блоки Configuration Instrumentation Object Builder
Поставщики (Providers) Связь между блоками Большой выбор среди разных исполнений Возможность адаптации к различным условиям Локализация процессов в одном модуле Легкость переноса из среды в среду Обеспечение независимости блоков Абстракция источников событий от их потребителей
Стандартный подход Что получаем без особых усилий
Что делать программисту Exception Policy – в программу. И все. Связь процесса со значением PostHandlingAction
Смотрим на код Симуляция реальной программы – Демо 1 Устройство модели EH блок в консоль Run-Time в код PostHandlingAction и код Крутим...
Как Exception Handling работает Exception Policy Exception Type Exception Handler Logging Category Trace Listener Formatter Exception Handling block Logging block Logging Exception Handler
Смотрим на код Симуляция реальной программы – Демо 2 Параметры EH в консоли Показ WrapHandler и ReplaceHandler с PostHandlingAction
Цели реального проекта 1. Создать универсальный способ для обработки ошибки – своя BaseException с коллекцией Data 2. Упростить вид ошибки в Event Log – свой ExceptionFormatter (и LogFormatter в дальнейшем) 3. Дать админу возможность скрыть внутреннюю ошибку – свой ExceptionHandler с дополнительными свойствами 4. Создать механизм для вытяжки специфических свойств ошибки плюс возможность расширения на другие типы ошибок – создать ExtraInformationProvider и его наследников 5. Обеспечить и унифицировать передачу данных через Web Services – создать ExceptionHandlers для Soap
Связь Design- и Run-Time Буфер данных ExceptionHandlerData Xml файл ExceptionHandlingSettings ExceptionHandlingSettings Run-timeIExceptionHadlerRun-timeIExceptionHadler EntLibConfig консоль ExceptionHandlerNode ExceptionHandlerNode
Творим Design Time 1. AssemblyInfo – ссылка на BaseExceptionHandlingConfigurationDesignManager 2. BaseExceptionHandlingConfigurationDesignManager – регистрация конфигурации и команд. 3. BaseExceptionWrapperNode – наследуем ExceptionHandlerNode. Олицетворяет обработчика ошибок в консоле. 4. BaseExceptionWrapper – наследуем IExceptionHandler. Run-time процессы 5. BaseExceptionWrapperData – наследуем ExceptionHandlerData. Буфер передачи данных.
Порядок постройки классов Run TimeDesign Time BaseExceptionWrapper BaseExceptionWrapperNode BaseExceptionWrapperData Регистрация нод и команд в дизайнере AssemblyInfo
Смотрим на код Симуляция реальной программы – Демо 3 Создаем BaseException и добавки в консоли Форматируем запись Недостатки WrapHandler Создаем BaseExceptionWrapper – показ Создаем ExtraInformationProvider – показ Создаем приложения для Soap – показ
Ссылки и ресурсы Enterprise Library для.NET Форум посвященный Exception Handling Блоб менеджера продукта Тома Холандера Примеры Design Time от Брайана Баттона Пишите мне
Заключение Аплодисменты Продолжительные аплодисменты Бурные несмолкаемые аплодисменты