
- •Архитектуры и модели программ и знаний
- •Аспектно-ориентированное программирование (АОП)
- •Аспектно-ориентированное программирование:
- •Структура определения аспекта (Aspect.NET)
- •Аспекты – статические или динамические?
- •Аспекты в AspectJ (1/2)
- •Аспекты в AspectJ (2/2)
- •Аспекты в Aspect.NET
- •Подходы к АОП
- •Цели Aspect.NET
- •Aspect.NET - Обзор
- •Aspect.NET ML – метаязык АОП
- •%aspect Test
- •Aspect.NET ML - пример
- •Аспект в терминах custom-атрибутов (пример)
- •Возможности Aspect.NET ML (1/3)
- •Возможности Aspect.NET ML (2/3)
- •Возможности Aspect.NET ML (3/3)
- •Архитектура Aspect.NET
- •Примеры внедрения
- •Диаграмма классов
- •Фильтрация точек внедрения
- •Декомпилированные результаты внедрения
- •Microsoft Phoenix (http://connect.microsoft.com /phoenix)
- •Проблемы АОП и их решения в Aspect.NET
- •Литература по АОП
- •Вопросы и домашнее задание к лекции 7

Диаграмма классов
примера

Фильтрация точек внедрения

Декомпилированные результаты внедрения
BankAccount account1 = new BankAccount();
Aspect.InternalSetArgsTypes("float");
Aspect.InternalSetMemberName("BankManagement.BankAccount.d
eposit");
Aspect.InternalSetTargetObject(account1);
UsageLicensingAspect.DepositWrapper(20f);\\instead of \\account1.deposit(20)
Aspect.InternalSetArgsTypes("float");
Aspect.InternalSetMemberName("BankManagement.BankAccount.wi
thdraw“)
Aspect.InternalSetTargetObject(account1);
UsageLicensingAspect.WithdrawWrapper(20f); \\instead of
\\account1. withdraw(20)
Console.WriteLine("Final balance is {0}", account1.Balance);
(C) Сафонов В.О. 2012

Microsoft Phoenix (http://connect.microsoft.com /phoenix)
и его использование в Aspect.NET
Возможностей рефлексии недостаточно для
инструментовки MSIL-сборок (даже в .NET 2.0)
Microsoft Phoenix – окружение для построения
компиляторов и шарокого диапазона инструментов для анализа, оптимизации и
тестирования программ
Phoenix обеспечивает высокоуровневыую
инструментовку MSIL-кода
Инструменты, использующие Phoenix, могут быть реализованы в виде фаз компиляцииPhoenix позволяет работать с отладочной информацией более надежными средствами, чем использование неуправляемого COM API - DIA
Phoenix используется в Aspect.NET для
внедрения аспектов и модификации целевых
сборок
Мы сотрудничаем с разработчиками Phoenix из Microsoft Research
(C) Сафонов В.О. 2012

Проблемы АОП и их решения в Aspect.NET
Ясность, наглядность, простотаПоведение целевых приложений после внедрения должно
быть предсказуемым (Aspect.NET: визуализация точек
внедрения на уровне исходного кода)
Процесс внедрения должен быть простым для понимания
(Aspect.NET: Простой метаязык)
Интеграция с существующими инструментами и процессами разработки программ (Aspect.NET: add-in к
Visual Studio)
Возможность отладки целевых приложенийОтладка в терминах исходного кода весьма важна
(Aspect.NET: мы планируем эту возможность)
Тестирование
АОП может привести к ошибкам и отказам (Aspect.NET:
возможно автоматизированное тестирование модулей в Visual Studio)
Эволюция
Производительность (Aspect.NET: Наша технология
статического внедрения практически не требует накладных расходов времени выполнения)
(C) Сафонов В.О. 2012

Литература по АОП
1.http://aosd.net – основной Web-сайт АОП 2.http://aspectj.org – Web-сайт AspectJ 3.Safonov V. O. Using aspect-oriented programming for trustworthy software development . – Wiley, 2008. 4.http://dotnet.sys-con.com/author/1330safono
v.htm - V.O
. Safonov’s “.NET Developer’s Journal” blog Web-страницы проекта Aspect.NET:
5. http://www.facultyresourcecenter.com/curriculum/ pfv.aspx?ID=6801
6.http://www(C) Сафонов.aspectdotnetВ.О. 2012 .org

Вопросы и домашнее задание к лекции 7
1.Сравните в теории и на практике подходы к АОП, реализованные в AspectJ и в Aspect.NET
2.Скачайте и инсталлируйте Aspect.NET, изучите и пропустите прилагаемые к реализации примеры (samples)
3.Разработайте в системе Aspect.NET аспект, выполняющий вставки проверок безопасности (security checks) в Ваше .NET-приложение.
4.В чем, по-Вашему, перспективность и недостатки АОП?
(C)Сафонов В.О. 2012