kiedy wykonywany jest kod AOP

Przeczytałem kilka artykułów na temat AOP i wygląda na bardzo interesujące i potężne narzędzie.

Ale co z wydajnością?

Na przykład, jeśli utworzę atrybut aspektu o nazwieMyMethodAspect. Zrobiłoby to prostą rzecz - na początku metody wyprowadzania z tym atrybutem nazywany jest kodem zawartym w mojej klasie MyMethodAspect. Na przykład napisz wiersz tekstu - „start ...”

to jest podstawowy przykład - ale co, jeśli logika wykonana przy uruchamianiu metody jest znacznie trudniejsza. Czy mogę zrozumieć, że kod wykonywany przy uruchamianiu metody jest kompilowany tylko raz, a później AOP nie będzie potrzebował dodatkowej mocy obliczeniowej?

DO#:

public void Do(int x){
Console.WriteLine(x);
}

Wyobrażam sobie, że IL to coś podobnego (prawie to samo):

 public void Do(int x){
    Console.WriteLine(x);
    }

iz aspektem:

DO#:

[MyMethodAspect]
    public void Do(int x){
    Console.WriteLine(x);
    }

więc przypuszczam, że IL to coś w stylu:

 public void Do(int x){
Console.WriteLine("starting...");
    Console.WriteLine(x);
    }

Czy klasa MyMethodAspect jest naprawdę używana tylko podczas fazy kompilacji, a później nie wymaga dodatkowej mocy wykonawczej?

Mam nadzieję, że rozumiesz, jakie jest moje pytanie, trudno mi to wyjaśnić :)

dzięki

questionAnswers(1)

yourAnswerToTheQuestion