|
|
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
Почитал немного на тему аспектно-ориентированного программирования, про AspectJ. Красиво, свежо. Но не понял главного: для чего весь этот сюрриализьм может сгодится в жизни. Ну логгеры говорят хорошо реализовывать на нем, ну допустим. Может кто юзал AspectJ в своих проектах, и сэкономил на этом уйму времени и кода. Поделитесь вашими достижениями, если не затруднит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 11:00 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
был у нас проектик один на прошлой работе. Чего вспомню - напишу. Было 2 сессион бина с кучей (~5-8 методов в каждом). Вдруг понадобилось добавить логирование в базу ход всех операций: - начало операци - успешное завершение операции или неуспешное мона как поступить? В каждый из (10-15) методов вставить логирование начала операции, успешного завершения операции ( в каждом(!) случае return) и в каждом(!) из мест возможных исключений и/или обработки исключений логирование "провала". Методы бинов уже и так были несколько перегружены подобной "сквозной функциональностью" - Lock-манагер, например, и т.д. мона попытаться сделать Facade для каждого бина. Пытались - ужасно: Бизнес метод можеть кидать от 1 до 5 исключений, которые нужно пробрасывать обратно (фасад-прокси не должен менять интерфейс) соответствующим оператором - длинный, некрасивый код. Решили делать с AspectJ. В принципе неплохо получилось, забавно. Но были и проблемы: - из-за недостатка опыта в AspectJ и/или из-за естественной неоднородности разных бизнес-методов код Aspect-а был, конечно, прост, но не особо короток. (И на каждый бин(их 2) свой аспект написали) - Ejb CMP container комиттит транзакцию в самом конце => невозможно залогировать такие ошибки для некоторых методов, которые сами не комитят какой-то результат. В нашем конкретном случае было признано некритичным. - в JBuilder X не было плагина для AspectJ (offtop: есть в Эклипсе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 11:51 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
Кроме логеров есть, например, еще такие вещи как декларативное управление транзакциями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 12:17 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
funikovyuri в EJB :) -- а Вы, кстати, пробовали корректно реализовать такое декл-е упр-е транзакциями? помню у мну остались смешанные воспоминания. Были проблемы с пробрасываемыми исключениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 12:54 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
jdev333 Использовал готовую реализацию из Spring'а (Spring AOP)... Остался доволен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 13:32 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
funikovyuri кстати, не просветите? Вроде Spring AOP на reflection работает, в отличие от AspectJ? (который меняет байт код) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 13:36 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
jdev333 http://static.springframework.org/spring/docs/1.2.x/reference/aop.html6.1.3. AOP Proxies in Spring Spring defaults to using J2SE dynamic proxies for AOP proxies. This enables any interface or set of interfaces to be proxied. Spring can also use CGLIB proxies. This is necessary to proxy classes, rather than interfaces. CGLIB is used by default if a business object doesn't implement an interface. As it's good practice to program to interfaces rather than classes, business objects normally will implement one or more business interfaces. It is possible to force the use of CGLIB: we'll discuss this below, and explain why you'd want to do this. Beyond Spring 1.0, Spring may offer additional types of AOP proxy, including wholly generated classes. This won't affect the programming model. Т.е. во время выполнения создается прокси класс (наследник нашего класса или интерфейса) в который добавляется нужная функциональность (вызовы advice'ов). Подобным образом работает и, например, hibernate. Также Spring позволяет использовать кроме своей реализации AOP еще и AspectJ Но я сам AspectJ не использовал, так как пока хватало Spring'а ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 13:48 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
ясно, спасиб во время выполнения => reflection, но reflection используется тока один раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 14:11 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
Еще может пригодицца при постоянной авторизации... В целях изучения юзал аспекты для управления транзакциями хибернейта... (подсмотрел на хибернейтовском сайте :) ) Примитивный профайлинг... опять же код не курочить :) Еще есть интродьюкшн... спорная фича, но иногда и такое нужно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 22:28 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
есть еще польза в виде инспектирования кода на соблюдение приличий. Типа нельзя объявлять какие-то поля в Stateless Session по спецификации и т.д. И не куроча код мы автоматом выявляем все нарушения! :) Auto Code review - это забавно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2005, 10:10 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
(правда, я как увидел сколько раз нарушены рекомендации по одним тока Session бинам - испугался и отключил эту фичу :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2005, 10:11 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
jdev333есть еще польза в виде инспектирования кода на соблюдение приличий. Типа нельзя объявлять какие-то поля в Stateless Session по спецификации и т.д. И не куроча код мы автоматом выявляем все нарушения! :) Auto Code review - это забавно ;) Угу, при девелопменте хорошо бьет по рукам, там где обычные (словесные) замечания на девелоперов эффекта не производят. Так сказать, большой брат смотрит на тебя :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2005, 12:22 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
220 VПочитал немного на тему аспектно-ориентированного программирования, про AspectJ. Красиво, свежо. Но не понял главного: для чего весь этот сюрриализьм может сгодится в жизни. Ну логгеры говорят хорошо реализовывать на нем, ну допустим. Может кто юзал AspectJ в своих проектах, и сэкономил на этом уйму времени и кода. Поделитесь вашими достижениями, если не затруднит. Вы почитайте про его возможности и прикиньте, нужны ли они вам. У меня еще не было ни одного проекта, где бы нельзя было бы обойтись Struts или аналогами. И не уверен, что потребуется вам. "Не умножайте сущностей сверх необходимости." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2005, 22:30 |
|
||
|
Практическая польза АОП
|
|||
|---|---|---|---|
|
#18+
М.Голованов Вы почитайте про его возможности и прикиньте, нужны ли они вам. У меня еще не было ни одного проекта, где бы нельзя было бы обойтись Struts или аналогами. И не уверен, что потребуется вам. Обойтись без АОП можно ( ИМХО всегда ), но нужно ли обходицца без него если можно им воспользовацца?? :) М.Голованов"Не умножайте сущностей сверх необходимости." Истина :) Здравый смысл должен подсказать в каком месте игра стоит свеч... п.с.: кстати причем здесь стратс?? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2005, 22:38 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33357053&tid=2151055]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
169ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 520ms |

| 0 / 0 |
