У кого-нибудь есть опыт работы с Postsharp?

Кто-нибудь использовал структуру АОП Postsharp в производственной среде? Есть ли подводные камни? Можно ли использовать Postsharp в сочетании с Log4Net для ведения журналов и т. д.?

Любые руководства по использованию Postsharp с веб-приложениями и/или Log4Net будут высоко оценены.


person Perpetualcoder    schedule 06.01.2009    source источник
comment
Я думал об использовании его как раз перед тем, как он стал коммерческим. Это очень неправильный путь для библиотеки АОП.   -  person Ivan G.    schedule 19.06.2010
comment
Я думаю, что издание сообщества все еще существует   -  person Perpetualcoder    schedule 20.06.2010


Ответы (6)


Я и еще один товарищ по команде по-разному используем PostSharp в нескольких проектах, которые находятся в производстве уже несколько месяцев. Например, в одном случае я использую его для регистрации значений параметров метода в случае исключения. PostSharp Laos (включенный в PostSharp) — это простой в использовании способ внедрения вызовов методов (например, при входе в метод, выходе и при исключениях), и вы можете легко добавить вызовы журнала в регистраторы, зарегистрированные в log4net.

Это увеличило время сборки, достаточное, чтобы немного изменить мои привычки сборки, но, конечно, не слишком много для преимуществ, которые оно предоставляет, IMO. При написании кода вы можете исключить его из своей локальной сборки, что достаточно легко сделать, чтобы вы могли продолжать сборку часто и быстро, а затем включать ее на свой сервер сборки и т. д.

Вот хорошее руководство по PostSharp от Гаэля (создателя PostSharp)... хотя он старый, приятно видеть его прогон. На самом деле нет никакой разницы в использовании его в консоли, winforms, WPF или WebApp, с которыми я сталкивался до сих пор.

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

Что касается кода, я очень впечатлен тем, насколько хорошо работает PostSharp... он никогда не испортил сборку, не сделал сборку недействительной или иным образом не испортил код. И я даже использовал его в приложениях ASP.NET с охватом кода и инструментарием производительности (поэтому он прекрасно работает с инструментами инструментов MS Assembly).

В общем, я бы определил. рекомендуем вам попробовать его для ваших требований log4net.

person ZeroBugBounce    schedule 06.01.2009

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

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

Для Postsharp достаточно руководства по началу работы на веб-сайте, в блоге и просмотра источника. Существенным недостатком является увеличение времени сборки. Я ненавижу ждать, пока мой компьютер заработает. Требуется около 8 секунд, чтобы нажать ctrl-shift-b в Visual Studio (на быстром ПК) для решения +-60K loc с 2 проектами, использующими действие сборки postsharp. Если можете, постарайтесь использовать Postsharp в как можно меньшем количестве проектов.

Если вы действительно не хотите использовать postsharp, вы можете создать решение с 20 проектами и добавить команду post-build в каждый из них. Время сборки будет достаточно долгим, чтобы разозлить остальную часть команды.

Лично я, вероятно, продолжу использовать Postsharp для будущих проектов. Преимущества перевешивают дополнительное время сборки.

person Paco    schedule 06.01.2009

Мы пытались использовать post sharp для одной или двух вещей, но проблема заключалась в том, что это слишком сильно увеличивало время сборки. Если вы используете непрерывную интеграцию и используете методологию частой проверки, вам лучше иметь чертовски хороший сервер сборки и рабочие станции.

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

person Matt Briggs    schedule 06.01.2009
comment
Спасибо, я искал именно такой вклад. В нашей команде есть фанат Postsharp :) - person Perpetualcoder; 06.01.2009
comment
Где вы прочитали о хуках компилятора? Мне любопытно! - person Paco; 06.01.2009
comment
Андерс недавно говорил об этом на конференциях (не знаю точно, откуда я это услышал). Видимо, долгосрочная цель состоит в том, чтобы csc был полностью управляемым кодом. - person Matt Briggs; 06.01.2009

Пользуюсь пост-шарпом, мне нравится. Время быстрой сборки поста раздражает, но это невозможно. В режиме отладки я использую условный SKIPPOSTSHARP, который устраняет постшарп.

person Community    schedule 15.02.2009

Согласно опросу сообщества PostSharp, многие компании используют PostSharp в производстве. Разочаровывает то, что они отказываются быть идентифицированными :-(.

person Gael Fraiteur    schedule 05.03.2009
comment
Гаэль, мы используем PostSharp в производстве на www.pirform.co.uk. Что ж, сейчас мы находимся в бета-версии, но скоро будет выпущено. Мы тоже рады быть идентифицированными. - person Sean Kearon; 02.04.2010

Мы используем PostSharp в производстве, как для среды выполнения 3.5, так и для среды выполнения Silverlight. Чтобы немного ускорить сборку, вы можете использовать переключатель /m: для msbuild (погуглите для параллельных сборок с помощью msbuild). Они также обещают значительно ускорить его в следующем выпуске.

person Nikolay R    schedule 05.03.2009