Понравилась презентация – покажи это...
Слайд 0
Аспектно-ориентированный подход на службе веб-приложений
Цытович Павел Леонидович
Fuse8, Южно-Уральский государственный университет
http://pavel-tsytovich.blogspot.com
3-я конференция .NET разработчиков
25 сентября 2011
Слайд 1
План
Почему вообще появилась эта тема
Паттерн «Стратегия»
Стратегия привела к аспектам
Как реализованы наши аспекты
Слайд 2
Почему вообще появилась эта тема
View
Model
Controller
DB
Множество Вариантов
Слайд 3
Паттерн стратегия
4
Слайд 4
От стратегии к аспектам
5
Формирование модели (MVC)
Рассылка писем
Чтение файлов конфигурации
мониторинг
транзакции
Управление Windows Workflow
Сквозная функциональность!
Слайд 5
Аспект
6
аспект — это повторно используемый компонент, который инкапсулирует поведение, необходимое множеству классов в проекте
Слайд 6
Сравнение АОП и DI
АОП & DI
Оба добиваются слабой связанности в архитектуре
Оба добиваются лучшего разделения функционала
Оба разгружают часть проблем с основного кода
7
http://habrahabr.ru/blogs/net/123186/
Слайд 7
Сравнение АОП и DI
АОП vs DI
DI хорош, когда вы имеете зависимость от компонент, причем вам не важно как они реализованы
АОП хорош, когда вам необходимо применить какое-то поведение к большому количеству элементов кода. Причем, целевой код не обязательно зависит от этого поведения
8
http://habrahabr.ru/blogs/net/123186/
Слайд 8
Наш аспект-фреймворк для ASP.NET MVC
Основан на ActionFilter атрибутах ASP.NET MVC
Требует реализации интерфейсов
IAspectPredicate – условия при котором выполняется аспект
IAspectAction – код аспекта, запускаемый при выполнении условия
Привязывается к Action-методу с помощью атрибута Aspect
Требует, чтобы контроллер наследовался от класса AspectController
Слайд 9
[Aspect]
10
Условие выполнения аспекта
Аспект
Время выполнения (before,calltime,after)
Слайд 10
Предикат
11
Определяет условие выполнение аспекта
Слайд 11
Аспект
12
Этот метод содержащий код аспекта
Слайд 12
Контроллер с поддержкой аспектов
13
Словарь для передачи данных между аспектами и между аспектами и контроллером
Метод, запускающий выполнение аспектов calltime
Метод-ловушка исключений в аспектах
Слайд 13
Демонстрация
Слайд 14
Дальнейшее направление работы
Поддержка транзакций (возможность отмены действия аспектов)
Асинхронные аспекты
Слайд 15
Спасибо за внимание
Цытович Павел Леонидович
Fuse8, Южно-Уральский государственный университет
Pavel.tsytovich@gmail.com
http://twitter.com/Dr_P_Watson
http://pavel-tsytovich.blogspot.com