1 / 30

Александр Межов ОАО ЧЭМК mezhov.blogspot

3 -я конференция .NET разработчиков 2 5 сентября 2011. Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования. Александр Межов ОАО ЧЭМК http://mezhov.blogspot.com. Немного теории. Metadata. Метаданные ( Metadata)

Télécharger la présentation

Александр Межов ОАО ЧЭМК mezhov.blogspot

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3-я конференция .NET разработчиков 25 сентября 2011 Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования Александр Межов ОАО ЧЭМК http://mezhov.blogspot.com

  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. Возможности Unity • Перехват методов интерфейса • Перехват методов класса (virtual, abstract) Client Proxy Перехватчики Перехватчики Interceptors Target

  17. Demo: Unity Interception

  18. Аудит изменений Вариант решения

  19. Что будем использовать • 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. Ссылки • Материалы конференции • http://dotnetconf.ru/Materialy • Аспектно-ориентированное программирование, перехват и Unity 2.0 (Дино Эспозито) • http://msdn.microsoft.com/ru-ru/magazine/gg490353.aspx • Перехватчики в Unity (Дино Эспозито) • http://msdn.microsoft.com/ru-ru/magazine/gg535676.aspx

  30. Спасибо за внимание • Александр Межов • ОАО ЧЭМК • as.mezhov@gmail.com • http://mezhov.blogspot.com/ • http://www.gotdotnet.ru/blogs/AlexMAS

More Related