Я знаю, что одно преимущество Ivy состоит в том, что это может использовать различные виды репозиториев. Знаток обычно очень тверд в формате репозитория, который он будет использовать. Это - все, что я знаю.
PostSharp это в основном полнофункциональный статический ткач. Это означает, что переплетение происходит в процессе сборки на этапе посткомпиляции. И, конечно, это может занять некоторое время. (Обязательно прочтите объявление Гаэля об улучшении производительности во время выполнения и улучшении производительности во время сборки , которые появятся в версии 2.0)
Если вы не хотите накладных расходов на время сборки, Есть только одно решение: использовать динамические ткачи. В .NET существует несколько структур перехвата, например Castle.DynamicProxy или Linfu.DynamicProxy . Они генерируют прокси во время выполнения. Имейте в виду, что эти платформы не могут делать столько же, сколько статическая среда АОП, такая как PostSharp, а также могут работать менее эффективно во время выполнения. Очень часто инфраструктуры IoC предлагают возможности динамического перехвата ( Spring.NET , Unity , Windsor и т. Д.)
Еще одно решение - рассмотреть гибрид weavers, который только статически переплетает точки соединения в процессе сборки, а затем позволяет вам динамически применять аспект во время выполнения. Linfu.AOP , который использует Mono.Cecil в качестве серверной части, работает так же.
Инфраструктуры IoC предлагают возможности динамического перехвата ( Spring.NET , Unity , Windsor и т. Д.)Еще одно решение - посмотреть на гибридных ткацких станков, которые только статически переплетает точки соединения в процессе сборки, а затем позволяет динамически применять аспект во время выполнения. Linfu.AOP , который использует Mono.Cecil в качестве серверной части, работает таким же образом.
Инфраструктуры IoC предлагают возможности динамического перехвата ( Spring.NET , Unity , Windsor и т. Д.)Еще одно решение - посмотреть на гибридных ткацких станков, которые только статически переплетает точки соединения в процессе сборки, а затем позволяет динамически применять аспект во время выполнения. Linfu.AOP , который использует Mono.Cecil в качестве серверной части, работает таким же образом.
Spring.NET не использует переплетение и основан на очень стабильной среде aop Java. Здесь адрес проекта.