slide1
Download
Skip this Video
Download Presentation
Александр Межов ОАО ЧЭМК mezhov.blogspot

Loading in 2 Seconds...

play fullscreen
1 / 30

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


  • 134 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Александр Межов ОАО ЧЭМК mezhov.blogspot' - tamara-burgess


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

3-я конференция .NET разработчиков

25 сентября 2011

Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования

Александр Межов

ОАО ЧЭМК

http://mezhov.blogspot.com

metadata
Metadata
  • Метаданные (Metadata)
    • Данные об объекте, характеризующие его в некотором контекстеиспользования (аспекте)
aspect
Aspect
  • Аспект (Aspect)
    • Сквозная (инфраструктурная) функциональность, которая инкапсулирует некоторое общее поведение
slide5
Примеры аспектов
  • Обработка ошибок
  • Трассировка запросов
  • Проверка прав доступа
  • Аудит (логирование) изменений
  • . . .
join point
Join point
  • Точка слияния (Join point)
    • Место, куда будет встроен код аспекта (например, вызов метода)
advice
Advice
  • Подача (Advice)
    • Встраиваемый код, который может быть выполнен до, после или в самой точке соединения
metadata aspect
Metadata & Aspect

Metadata

Aspect 1

Aspect 2

Aspect 3

slide9
Реализации
  • PostSharp
      • Подача через атрибуты
  • Aspect.NET
      • Подача через атрибуты
  • Spring.NET AOP
      • Подача через перехват вызовов
  • Unity
      • Подача через перехват вызовов
slide11
Подача через атрибуты
  • Просто добавлять (+)
  • Можно тестировать (+)
  • Экземпляры создаются через new (+)
  • Сложно модифицировать (–)
  • Увеличивает связность аспектов (–)
slide14
Подача через атрибуты
  • Просто добавлять (+)
  • Можно тестировать (+)
  • Просто модифицировать (+)
  • Аспекты никак не связаны (+)
  • Экземпляры создаются через фабрику (–)
unity
Возможности Unity
  • Перехват методов интерфейса
  • Перехват методов класса (virtual, abstract)

Client

Proxy

Перехватчики

Перехватчики

Interceptors

Target

slide18
Аудит изменений

Вариант решения

slide19
Что будем использовать
  • Unity 2.0
    • Unity Application Block (Unity)
metadata aspect1
Metadata & Aspect

Metadata

History Aspect

slide21
Работа с метаданными
  • Создаются для определенного типа
  • Содержат информацию об аспектах
  • Хранятся в отдельной сборке (сборках)
slide22
Пример метаданных

Определение типа:

Определение метаданных для типа:

Аспект истории

slide23
Поиск метаданных
  • Сборка метаданных:
    • ..\Metadata\{Type Assembly}.Metadata.dll
  • Класс метаданных:
    • {Type Name}Metadata : IMetadata
slide24
Аспект истории
  • Формирует список изменений (change set) для конкретного действия с данными: Inset, Update и Delete
slide25
Перехватчик для аудита
  • Перехватывает вызовы хранилища (repository) в момент создания, изменения или удаления объекта
slide26
Регистрация перехватчика

Где-то на этапе инициализации приложения…

slide29
Ссылки
  • Материалы конференции
      • 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
slide30
Спасибо за внимание
  • Александр Межов
  • ОАО ЧЭМК
  • [email protected]
  • http://mezhov.blogspot.com/
  • http://www.gotdotnet.ru/blogs/AlexMAS
ad