Download
1 / 30

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


  • 133 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

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

25 сентября 2011

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

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

ОАО ЧЭМК

http://mezhov.blogspot.com



Metadata
Metadata

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

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


Aspect
Aspect

  • Аспект (Aspect)

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


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

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

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

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

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

  • . . .


Join point
Join point

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

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


Advice
Advice

  • Подача (Advice)

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


Metadata aspect
Metadata & Aspect

Metadata

Aspect 1

Aspect 2

Aspect 3


Реализации

  • PostSharp

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

  • Aspect.NET

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

  • Spring.NET AOP

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

  • Unity

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



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

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

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

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

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

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




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

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

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

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

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

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



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

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

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

    Client

    Proxy

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

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

    Interceptors

    Target


    Demo unity interception
    Demo: Unity Interception


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

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


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

    • Unity 2.0

      • Unity Application Block (Unity)


    Metadata aspect1
    Metadata & Aspect

    Metadata

    History Aspect


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

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

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

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


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

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

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

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


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

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

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

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

      • {Type Name}Metadata : IMetadata


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

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


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

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


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

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



    Demo history aspect
    Demo: History Aspect


    Ссылки

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

      • 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


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

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

    • ОАО ЧЭМК

    • [email protected]

    • http://mezhov.blogspot.com/

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


    ad