Аспектно-ориентированное программирование
22 февраля 2023

Аспектно-ориентированное программирование

Всем привет! Сегодня разбираем АОП (Аспектно-ориентированное программирование). Разберем основные определения, чем оно полезно, а также посмотрим некоторые примеры.
Павел Хохлов, инженер-разработчик ПО Logrocon

Ссылка на вебинар внизу страницы

Парадигмы программирования

Парадигма — это совокупность идей и понятий, определяющих стиль написания компьютерных программ.

  • инструкция (императивное программирование, FORTRAN/C/PHP),
  • функция (функциональное программирование, Haskell/Lisp/F#/Scala),
  • прототип (прототипное программирование, JavaScript),
  • объект (объектно-ориентированное программирование, C#/С++/Java),
  • факт (логическое программирование, PROLOG).
  • аспект (аспектно-ориентированное программирование C#)

АОП — Парадигма программирования предназначенная для декомпозиции (также известная как факторинг, — это разбиение сложной проблемы или системы на части, которые легче представить, понять, запрограммировать и поддерживать) кода с помощью модуляции сквозной функциональности и выделение её в отдельные конструкций. Называемых аспектами.

Зачем нужен АОП?

  1. Позволяет отделять второстепенные (non-core concern) задачи от основной логики методов/классов.
  2. Данная возможность добавляет модульности программе, так как однотипными задачами теперь занимается отдельный модуль.
  3. Позволяет внедрять сквозную функциональность без влияния на основную логику.

Основные определения

  • Аспект (aspect) — некоторая (не основная) задача программы, выделенная в отдельный модуль
  • Срез (point cut) — описание всех мест действия аспекта
  • Совет (advice) — реализация задачи аспекта
  • Точка соединения (join point) — точка в выполняемой программе (вызов метода, создание объекта, обращение к переменной), где следует применить совет ;
  • Цель (target) — объект, к которому будут применяться советы;

Варианты работы с аспектами

Внедрение (introduction) — изменение структуры элемента программы
• Добавление поддержки интерфейса
• Добавление новых методов, свойств, полей

Связывание (weaving) — способ заставить выполнить совет в точках прикрепления
• Статическое (перед запуском программы)
• Динамическое (во время выполнения программы)

Связывание (weaving)

Статическое
• Переписывание исходного кода (макросы)
• Переписывание IL (перекомпиляция)

Динамическое
• Архитектура (декораторы, пайплайны)
• Проксирование (Генерация оберток)
• Переписывание IL (JIT-перехват)

В видеоуроке ниже вы найдете примеры принципов использования АОП (в коде).

Содержание:

00:00:00
 — Вступление. Парадигмы. Пример написания метода.
00:05:32 — Виды функциональностей. Сквозная функциональность (второстепенная)
00:07:44 — Определение АОП. Зачем нужен АОП? Необходимые определения.
00:13:58 — Варианты работы с аспектами. Связывание (Weaving)
00:16:49 — Примеры принципов использования АОП (работа с кодом)
Вам также может быть интересно