Каковы возможные варианты использования АОП? - PullRequest
50 голосов
/ 04 февраля 2010

Я хотел бы представить, каковы возможные варианты эффективного участия АОП в разработке приложений.До сих пор я встречал только:

  • связанные с журналированием
  • проверки безопасности
  • управление транзакциями
  • настройка устаревшего приложения

Что-нибудь еще?

(Это не обязательно должен быть AOP на основе прокси Spring - скорее JBoss AOP.)

( Смежный вопрос )

Ответы [ 11 ]

27 голосов
/ 04 февраля 2010

Я могу привести два примера, где мы его используем:

  • Автоматическая регистрация объектов в JMX для удаленного управления. Если класс помечен нашей аннотацией @AutoRegister, у нас есть аспект, который отслеживает новые экземпляры этого класса и автоматически регистрирует их в JMX.

  • Журнал аудита (сценарий использования золотого стандарта AOP). Это немного грубовато, но общий подход состоит в том, чтобы аннотировать методы, представляющие некоторые проверяемые действия. В сочетании с чем-то вроде Spring Security мы можем получить довольно хорошее представление о:

    • кто пользователь
    • какой метод они вызывают
    • какие данные они предоставляют
    • во сколько метод был вызван
    • был ли вызов успешным или нет (то есть, если было сгенерировано исключение)
7 голосов
/ 04 февраля 2010

Чтобы увидеть охват АОП с точки зрения применимости, я действительно рекомендую вам прочесть книгу Аспектно-ориентированные разработки программного обеспечения-Случаи использования . В этой книге рассматриваются варианты использования функциональных и нефункциональных требований с использованием АОП. После этого вы увидите, что аспекты могут использоваться для большего количества требований, чем ведение журнала, трассировка, безопасность и т. Д.

4 голосов
/ 04 февраля 2010
  • Блокировка чтения / записи .Вместо того, чтобы копировать тот же фрагмент, я использовал аспект для определения методов, которые требовали блокировки чтения или эксклюзивной блокировки.
4 голосов
/ 04 февраля 2010

Кэширование на уровне метода, если ваш метод не имеет состояния (я имею в виду, возвращает одно и то же значение при повторном вызове с одинаковыми значениями параметров) Это более эффективно в случае методов DAO, поскольку позволяет избежать попадания в базу данных.

4 голосов
/ 04 февраля 2010

Одним из эффективных применений АОП, помимо всех перечисленных вами, может быть проверка. Проверка ввода пользователя или бизнес-объектов.

Статьи по теме, на которые вы должны посмотреть.

3 голосов
/ 21 ноября 2010

Мы используем его для управления лицензиями на программное обеспечение, т. Е. Разрешаем запускать программное обеспечение только в том случае, если на компьютере установлены какие-либо конкретные лицензии.Это не сильно отличается от вашего перечисленного использования, поскольку это форма проверки безопасности.

Я опубликовал запись в блоге, описывающую практическую реализацию здесь

3 голосов
/ 05 февраля 2010
  • Обработка исключений: не нужно повторять ужасный список try ... catch, catch, catch и т. Д. - также означает, что обработка исключений гарантированно будет согласованной.
  • Мониторинг производительности:Очень полезно, так как использование аспекта не навязчиво и может быть сделано после факта, а затем отключено, когда больше не требуется.
1 голос
/ 02 октября 2015

Проверка во время выполнения кода контрактов. Кодовые контракты для .NET используйте AOP для

Проверка во время выполнения.Наш бинарный переписчик модифицирует программу, вводя контракты, которые проверяются как часть выполнения программы.

1 голос
/ 16 июля 2010

INotifyPropertyChanged и подобные ужасы.

В основном, где есть код, который выглядит так - используйте аспект, и все готово.

1 голос
/ 10 февраля 2010

Я также буду рекомендовать аспекты для:

  • Асинхронные вызовы методов
  • Мониторинг

С помощью Spring и tcServer (разработчик) вы можете легко отслеживатьвсе ваши бобы Spring с аннотацией @Component.Вы можете видеть использованное время, входные и выходные данные, включая исключения.

...