Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемКирилл Лялькин
1 Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования Александр Межов ОАО ЧЭМК 3-я конференция.NET разработчиков 25 сентября 2011
2 Немного теории
3 Metadata Метаданные (Metadata) Данные об объекте, характеризующие его в некотором контексте использования (аспекте)
4 Aspect Аспект (Aspect) Сквозная (инфраструктурная) функциональность, которая инкапсулирует некоторое общее поведение
5 Примеры аспектов Обработка ошибок Трассировка запросов Проверка прав доступа Аудит (логирование) изменений...
6 Join point Точка слияния (Join point) Место, куда будет встроен код аспекта (например, вызов метода)
7 Advice Подача (Advice) Встраиваемый код, который может быть выполнен до, после или в самой точке соединения
8 Metadata & Aspect Metadata Aspect 1 Aspect 2 Aspect 3
9 Реализации PostSharp Подача через атрибуты Aspect.NET Подача через атрибуты Spring.NET AOP Подача через перехват вызовов Unity Подача через перехват вызовов
10 Подача через атрибуты
11 Просто добавлять (+) Можно тестировать (+) Экземпляры создаются через new (+) Сложно модифицировать (–) Увеличивает связность аспектов (–)
12 Слишком много атрибутов
13 Подача через перехват вызовов
14 Подача через атрибуты Просто добавлять (+) Можно тестировать (+) Просто модифицировать (+) Аспекты никак не связаны (+) Экземпляры создаются через фабрику (–)
15 Unity & AOP
16 Перехват методов интерфейса Перехват методов класса (virtual, abstract) Возможности Unity Proxy Target Client Перехват чики Interceptors
17 Demo: Unity Interception
18 Аудит изменений Вариант решения
19 Что будем использовать Unity 2.0 Unity 2.0 Unity Application Block (Unity)
20 Metadata & Aspect Metadata History Aspect … … … …
21 Работа с метаданными Создаются для определенного типа Содержат информацию об аспектах Хранятся в отдельной сборке (сборках)
22 Пример метаданных Определение типа: Определение метаданных для типа: Аспект истории
23 Поиск метаданных Сборка метаданных:..\Metadata\{Type Assembly}.Metadata.dll Класс метаданных: {Type Name}Metadata : IMetadata
24 Аспект истории Формирует список изменений (change set) для конкретного действия с данными: Inset, Update и Delete
25 Перехватчик для аудита Перехватывает вызовы хранилища (repository) в момент создания, изменения или удаления объекта
26 Регистрация перехватчика Где-то на этапе инициализации приложения…
27 Как использовать?
28 Demo: History Aspect
29 Ссылки Материалы конференции Аспектно-ориентированное программирование, перехват и Unity 2.0 (Дино Эспозито) Перехватчики в Unity (Дино Эспозито)
30 Спасибо за внимание Александр Межов ОАО ЧЭМК
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.