Встроенный АОП в С# - это в пути?
В больших приложениях я действительно хочу, чтобы у меня были встроенные средства АОП. Поскольку на С# лучше всего работать, это фабрики и платформы RealProxys, PostSharp, ICorDebug, ICorProfiler или инъекции. Нет чистого встроенного способа AOP.
Есть ли какие-либо указания в любом месте (сообщение в блоге/внутреннее обсуждение), что указывает на то, что АОП находится на пути?
Ответы
Ответ 1
Роменские ответы покрывают (почти:) отлично текущие решения. Что касается будущей поддержки, Андерс Хейлсберг ранее заявил, что они были в ожидании и смотрят режим об АОП.
Мы можем только надеяться, что с управляемой переработкой csc и "Компилятор как услуга" можно было бы подключить к компилятору и там добавить там аспекты.
Ответ 2
Я не слышал о "чистом встроенном способе создания АОП". Но, как вы сказали, уже существует множество "чистых способов создания АОП", используя зрелые и мощные структуры, такие как PostSharp или Замок DynamicProxy.
Используя BCL, один очевидный способ сделать AOP, с довольно сильными ограничениями, заключается в использовании прозрачных и реальных прокси из стека .NET Remoting.
Другим способом является использование System.Reflection.Emit для динамического создания прокси-серверов, например, hum, DynamicProxy из Castle.
Наконец, есть еще одно официальное решение Microsoft с флагом, которое поставляется с корпоративной библиотекой. Я говорю о блоке приложений для внедрения политики. Unity также предлагает некоторые возможности перехвата, которые используют PIAB.
Ответ 3
Spring.NET также предоставляет АОП. Он требует большой конфигурации, но после его настройки он работает хорошо.
Ответ 4
Майский выпуск Delphi Prism поддерживает AOP на уровне языка.
Подробнее об этом можно узнать здесь.
http://prismwiki.codegear.com/en/Cirrus
Существует также библиотека с открытым исходным кодом аспектов из этого местоположения
http://code.remobjects.com/p/prismaspects/