Встроенный AOP в C # - это в пути? - PullRequest
29 голосов
/ 07 мая 2009

В больших приложениях я действительно хочу, чтобы у меня были встроенные средства AOP. В C # лучшее, что вы можете сделать, - это фабрики и RealProxys, PostSharp, ICorDebug, ICorProfiler или интегрированные среды. Нет чистого встроенного способа сделать АОП.

Есть ли какие-либо указания (сообщение в блоге / внутреннее обсуждение), указывающие на то, что АОП уже в пути?

Ответы [ 4 ]

11 голосов
/ 07 мая 2009

Ответ Ромен охватывает (почти :) совершенно современные решения. Что касается будущей поддержки, Андерс Хейлсберг имеет ранее заявленное , что они находились в режиме ожидания и просмотра режима AOP.

Мы можем только надеяться, что с управляемым переписыванием csc и «Компилятором как услугой» можно будет подключиться к компилятору и добавить туда аспекты.

9 голосов
/ 07 мая 2009

Я не слышал о «чистом встроенном способе выполнения АОП». Но, как вы сказали, уже есть множество «чистых способов выполнения AOP», использующих зрелые и мощные фреймворки, такие как PostSharp или Castle DynamicProxy .

Использование BCL, один очевидный способ сделать AOP с довольно жесткими ограничениями, заключается в использовании прозрачных и реальных прокси из стека .NET Remoting.

Другим способом является использование System.Reflection.Emit для динамической генерации прокси-серверов типа Hum, DynamicProxy из Castle.

Наконец, есть еще одно официальное решение от Microsoft, поставляемое с Enterprise Library . Я говорю о блоке внедрения политики . Unity также предлагает некоторые возможности перехвата, использующие PIAB.

2 голосов
/ 08 мая 2009

Spring.NET также предоставляет АОП. Требуется много настроек, но после настройки все работает хорошо.

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

Майская версия Delphi Prism имеет поддержку AOP на уровне языка.

Подробнее об этом можно узнать здесь

http://prismwiki.codegear.com/en/Cirrus

Здесь также есть библиотека аспектов с открытым исходным кодом.

http://code.remobjects.com/p/prismaspects/

...