Парадигмы программирования
Парадигма — это совокупность идей и понятий, определяющих стиль написания компьютерных программ.
- инструкция (императивное программирование, FORTRAN/C/PHP),
- функция (функциональное программирование, Haskell/Lisp/F#/Scala),
- прототип (прототипное программирование, JavaScript),
- объект (объектно-ориентированное программирование, C#/С++/Java),
- факт (логическое программирование, PROLOG).
- аспект (аспектно-ориентированное программирование C#)
АОП — Парадигма программирования предназначенная для декомпозиции (также известная как факторинг, — это разбиение сложной проблемы или системы на части, которые легче представить, понять, запрограммировать и поддерживать) кода с помощью модуляции сквозной функциональности и выделение её в отдельные конструкций. Называемых аспектами.
Зачем нужен АОП?
- Позволяет отделять второстепенные (non-core concern) задачи от основной логики методов/классов.
- Данная возможность добавляет модульности программе, так как однотипными задачами теперь занимается отдельный модуль.
- Позволяет внедрять сквозную функциональность без влияния на основную логику.
Основные определения- Аспект (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 — Примеры принципов использования АОП (работа с кодом)