Как стать автором
Обновить

Комментарии 13

А какие-нибудь другие примеры использования PostSharp у вас есть?

У меня есть крайне положительный опыт использования PostSharp для кэширования, и я даже не могу с ходу придумать адекватной альтернативы для такого же простого и эффективного решения.
я видел много примеро аспектов, но вопрос был в удачности\неудачности, т.к. судить по одному неудачному примеру мне кажется преждевременно
Я сужу по ряду примеров в разных проектах. Аспекты — это очень весело, но когда нужно все это поддерживать и эволюционировать архитектуру приложения, проявляется полное отсутствие гибкости и банальной очевидности того, что инъецируется в код.
Минусы действительно актуальны, по подобным же причинам в компании не используем PostSharp и прочие модификаторы IL, единственное что остается из АОП — использование для объектов, полученных через DI контейнер.
По поводу решарпера — очень рад, вы создаете документацию на API, а есть ли какие прогнозы на то, когда большая часть API будет покрыта документацией?
Полностью покрыть Решарпер документацией невозможно. Идея в том, чтобы покрыть основные узлы.
Моя проблема с PostSharp'ом была связана с огромным временем билдов. В итоге от него отказались.
С одной стороны, да, это было проблемой — вроде как сейчас с этим получше, но насколько — не знаю. С другой стороны, есть в мире люди которые пишут на Scala где скорость компиляции в 10 раз (!!!) меньше чем у Java. И ничего, пишут как-то.
У меня к вам вопрос про один из аспектов АОП: Логи, вернее трэйсинг.

Представте кучу лазанья кода писавшегося 8 лет. Ни Sequence diagram, ни даже внятных комментов. Я хочу разобраться как оно там работает, но не в дебагерре.

С помощью PostSharp и SmartInspector можно лего сделать так что я получу лог по требуемым функциям \ классам вида:

A::Foo( a=5, b="Hello")
        B::Boo( a = 5)
        Boo return 25
Foo return "Hello 25"

Что-то типа трейса, который как-бы заменит Sequence diagram.

Мне интересны способы реализации такой штуки с минимальным изменениям существующего кода. Это можно сделать с PostSharp с изменениями в IL или с помощью Unity в runtime.

Буду благодарен совету по данному вопросу.
PS. Спасибо за демонстрацию опасностей PostSharp.
Оупенсорс-проект на базе постшарпа
Оупенсорс-проект на базе Mono.Cecil

Обе меняют IL.

Второе — моё. Логирует через добавление атрибута [Log] в AssemblyInfo требуемого проекта. Ну и требуется руками создать инстанс логгера в статическом поле статического класса.
Изменения, имхо, минимальны :)
С постшарпом проблемма в лицензии, я не могу его на работе включить в проэкт.

А ваше — попробую, вроде apache позволяет.
Спасибо.
На мой взгляд логирование и трейсинг — это единственное достойное применение PostSharpа, потому что его минимализм — заразен, и часто приносит больше проблем чем пользы
Попробуйте CThru (на основе Typemock Isolator — не меняет исходного кода, перехватывает вызовы через Profiler API)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории