Mezhov blogspot
This presentation is the property of its rightful owner.
Sponsored Links
1 / 30

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


  • 87 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Александр Межов ОАО ЧЭМК 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.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


Mezhov blogspot

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

25 сентября 2011

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

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

ОАО ЧЭМК

http://mezhov.blogspot.com


Mezhov blogspot

Немного теории


Metadata

Metadata

  • Метаданные (Metadata)

    • Данные об объекте, характеризующие его в некотором контекстеиспользования (аспекте)


Aspect

Aspect

  • Аспект (Aspect)

    • Сквозная (инфраструктурная) функциональность, которая инкапсулирует некоторое общее поведение


Mezhov blogspot

Примеры аспектов

  • Обработка ошибок

  • Трассировка запросов

  • Проверка прав доступа

  • Аудит (логирование) изменений

  • . . .


Join point

Join point

  • Точка слияния (Join point)

    • Место, куда будет встроен код аспекта (например, вызов метода)


Advice

Advice

  • Подача (Advice)

    • Встраиваемый код, который может быть выполнен до, после или в самой точке соединения


Metadata aspect

Metadata & Aspect

Metadata

Aspect 1

Aspect 2

Aspect 3


Mezhov blogspot

Реализации

  • PostSharp

    • Подача через атрибуты

  • Aspect.NET

    • Подача через атрибуты

  • Spring.NET AOP

    • Подача через перехват вызовов

  • Unity

    • Подача через перехват вызовов


  • Mezhov blogspot

    Подача через атрибуты


    Mezhov blogspot

    Подача через атрибуты

    • Просто добавлять (+)

    • Можно тестировать (+)

    • Экземпляры создаются через new (+)

    • Сложно модифицировать (–)

    • Увеличивает связность аспектов (–)


    Mezhov blogspot

    Слишком много атрибутов


    Mezhov blogspot

    Подача через перехват вызовов


    Mezhov blogspot

    Подача через атрибуты

    • Просто добавлять (+)

    • Можно тестировать (+)

    • Просто модифицировать (+)

    • Аспекты никак не связаны (+)

    • Экземпляры создаются через фабрику (–)


    Unity aop

    Unity & AOP


    Unity

    Возможности Unity

    • Перехват методов интерфейса

    • Перехват методов класса (virtual, abstract)

    Client

    Proxy

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

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

    Interceptors

    Target


    Demo unity interception

    Demo: Unity Interception


    Mezhov blogspot

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

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


    Mezhov blogspot

    Что будем использовать

    • Unity 2.0

      • Unity Application Block (Unity)


    Metadata aspect1

    Metadata & Aspect

    Metadata

    History Aspect


    Mezhov blogspot

    Работа с метаданными

    • Создаются для определенного типа

    • Содержат информацию об аспектах

    • Хранятся в отдельной сборке (сборках)


    Mezhov blogspot

    Пример метаданных

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

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

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


    Mezhov blogspot

    Поиск метаданных

    • Сборка метаданных:

      • ..\Metadata\{Type Assembly}.Metadata.dll

    • Класс метаданных:

      • {Type Name}Metadata : IMetadata


    Mezhov blogspot

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

    • Формирует список изменений (change set) для конкретного действия с данными: Inset, Update и Delete


    Mezhov blogspot

    Перехватчик для аудита

    • Перехватывает вызовы хранилища (repository) в момент создания, изменения или удаления объекта


    Mezhov blogspot

    Регистрация перехватчика

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


    Mezhov blogspot

    Как использовать?


    Demo history aspect

    Demo: History Aspect


    Mezhov blogspot

    Ссылки

    • Материалы конференции

      • 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


  • Mezhov blogspot

    Спасибо за внимание

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

    • ОАО ЧЭМК

    • [email protected]

    • http://mezhov.blogspot.com/

    • http://www.gotdotnet.ru/blogs/AlexMAS


  • Login