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