AOP に関する記事をいくつか読みましたが、非常に興味深く強力なツールのようです。
しかし、パフォーマンスはどうですか?
たとえば、 というアスペクト属性を作成するとどうなるでしょうかMyMethodAspect
。それは簡単なことです - その属性を持つメソッドの実行の開始時に、私の MyMethodAspect クラスに含まれるコードが呼び出されます。たとえば、「starting...」というテキスト行を書きます。
これは基本的な例ですが、メソッドの開始時に実行されるロジックがはるかに難しい場合はどうなるでしょうか。メソッドの開始時に実行されるコードは 1 回だけコンパイルされ、それ以降は AOP が追加のパフォーマンス パワーを必要としないことを理解できますか?
C#:
public void Do(int x){
Console.WriteLine(x);
}
ILは次のようなものだと思います(ほとんど同じです):
public void Do(int x){
Console.WriteLine(x);
}
そしてアスペクトで:
C#:
[MyMethodAspect]
public void Do(int x){
Console.WriteLine(x);
}
だから私はILが次のようなものだと思います:
public void Do(int x){
Console.WriteLine("starting...");
Console.WriteLine(x);
}
MyMethodAspect クラスは実際にコンパイル フェーズでのみ使用され、その後は追加のパフォーマンス パワーは必要ありませんか?
私の質問が何であるかを理解していただければ幸いです。説明するのは難しいです:)
ありがとう