Какие библиотеки AOT-ориентированного программирования (AOP) для .NET все еще активно развиваются?
Я пытаюсь найти достаточно зрелую/стабильную и свободно доступную (желательно с открытым исходным кодом) библиотеку для выполнения АОП в .NET. Я искал немного и нашел продукты ниже; однако большинство из них кажутся мертвыми:
-
PostSharp — это решение АОП, обычно рекомендуемое для .NET, однако это коммерческий продукт, и поэтому применяются некоторые ограничения использования. (Тем не менее, он, похоже, является бесплатным для личных или открытых проектов.)
-
Spring.NET — не исключительно об АОП, поэтому он, вероятно, слишком силен, если только хочет сделать АОП. (?)
-
Блок приложений для инъекций — от Microsoft, я ожидаю, что это будет, по крайней мере, поддерживаться.
-
Castle Windsor вместе с DynamicProxy — не в первую очередь библиотеку AOP, но, по-видимому, она может быть использована для этой цели.
-
Аспект # — это кажется мне совершенно мертвым.
-
Aspect.NET — это также кажется мне совершенно мертвым.
-
NAop — по-видимому, больше не поддерживается.
-
AOP.NET — это должно было быть преемником NAop, а также похоже, что он умер некоторое время назад.
Возможно, еще больше. Из приведенного выше списка я понимаю, что единственными реальными вариантами для AOP на .NET являются PostSharp (хотя это коммерческий продукт), Spring.NET, Microsoft Application Application Block или Windsor.
Я забыл какой-нибудь важный вариант?
См. также вопрос Предложения для аспектно-ориентированной библиотеки с открытым исходным кодом для С# здесь, в StackOverflow. Я опубликовал новый вопрос, потому что меня особенно интересует состояние разработки/поддержки различных решений AOP для .NET.
Ответы
Ответ 1
Вам не нужно, чтобы Windsor использовал DynamicProxy. Windsor использует DynamicProxy для своих целей, как и NHibernate, RhinoMocks, Moq или другие библиотеки/приложения/фреймворки.
Если вам нужен только AOP времени выполнения, без контейнера IoC, используйте только Caste DynamicProxy.
Он активно развивается, последний релиз был выпущен 2 недели назад, в этом месяце ожидается финальный выпуск (v2.5).
Примечание. В предыдущих версиях (до версии 2.2) DynamicProxy использовался для самостоятельной сборки Castle.DynamicProxy.dll. Позднее он был перемещен в Castle.Core.dll, и теперь для его использования не требуется никаких других сборок. Источник
Ответ 2
Был также Aurum (доступен www.machinaaurum.com.br), который был построен на Unity. Источник доступен на Codeplex.