Что в реальном мире используется для аспектно-ориентированного программирования? - PullRequest
8 голосов
/ 12 мая 2009

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

Таким образом, помимо неинвазивного ведения журнала, какие способы вы использовали или планируете использовать AO, которые снижают сложность, улучшают обслуживание, улучшают систему "способности" ?

Ответы [ 6 ]

3 голосов
/ 21 июня 2009

В настоящее время я использую AOP через EntLib / Unity для:

  • каротаж
  • кэширование
  • безопасность
  • сообщение об исключении
  • счетчики производительности

Взгляните на http://www.agileatwork.com/unit-of-work-with-unity-and-aspnet-mvc/ для реализации шаблона единицы работы с AOP

[UnitOfWork]
public void Process(Job job)
{
    ...
}
2 голосов
/ 12 мая 2009

Управление транзакциями. Я знаю, что это каноническое использование АОП, но оно действительно сияет, когда используется для этого.

И хотя у меня не было возможности использовать его в реальной ситуации, я вижу «универсальный совет» как невероятно мощный, в частности из-за того, что он добавляет значение для упрощения сложности кода путем удаления нужно много проверок на редкие состояния.

1 голос
/ 12 мая 2009

АОП является распространенным явлением, за исключением того, что люди редко называют его АОП. Посмотрите на все места в программировании .NET, где используются атрибуты. Атрибуты - это, по сути, сквозное поведение, которое может применяться ко многим классам / методам / параметрам.

В последнее время платформа ASP.NET MVC широко использовала атрибуты для широкого спектра сквозных компонентов, таких как безопасность, привязка данных и обработка исключений.

1 голос
/ 12 мая 2009

Я согласен на Spring AOP.

AOSD (мы больше не говорим об AOP, я точно не знаю, почему) действительно полезен для промежуточного программного обеспечения / сервис-ориентированной архитектуры, где у вас уже есть некоторая модульность.

Я использовал его в этом контексте для услуг телефонии с некоторыми действительно ограниченными биллинговыми услугами.

Я также использовал его для создания своего рода модульного интерпретатора / компилятора, чтобы выполнить некоторый анализ вокруг некоторого кода.

На мой взгляд, одной из проблем являются языки pointcut, которые иногда сложно описать, где именно вы хотите применить свой совет. Другая проблема - это композиция, я не знаю, была ли она решена, но это может быть трудно понять, когда вы заказываете свои советы ....

0 голосов
/ 10 марта 2015

Язык проверки e оборудования использует AOP.

0 голосов
/ 12 мая 2009

По моему опыту, с Spring AOP кажется довольно распространенным явлением.

Я думаю, что трудность заключается в том, что люди просто не привыкли мыслить с точки зрения аспектов, и переплетение кода даже во время компиляции может быть несколько страшным, так как труднее увидеть, что на самом деле влияет на каждый метод, Например, ESP, если вы используете смесь ткачества во время компиляции и во время выполнения.

Я использовал его в ситуациях, когда у меня есть один контроллер, и я добавляю, например, сервлет или веб-сервис. Я также использовал его для абстрагирования базы данных, чтобы соединения с базой данных и запросы, оптимизированные для базы данных, могли быть вплетены в приложение.

...