1

http://www.developerfusion.com/article/5307/aspect-directional-programming-using-net/3でAOP の例を試してみまし たが、うまく動作しますが、パフォーマンスに問題があります。各呼び出しには 40 ミリ秒のオーバーヘッドがあります。

1.オーバーヘッドを減らす方法はありますか? 例から削除できるものがあるかどうかはわかりません。2. さらに重要なことは、呼び出しインターセプトがパブリック メソッドに対してのみ行われたかどうかです。Preprocess 内の Type を見ることができますが、その時点で既に 20ms を使用しており、プライベート メソッドがまったく傍受されないようにしたいと考えています。attributetargets をメソッドにすることでそれを行うことができますが、私はそれを避けて、attributetarget をクラスに残します。

ありがとう

4

2 に答える 2

1

MarshalByRefObjects私の観点からすると、AOP の実装に使用するのは得策ではありません。コード生成を使用してアスペクトを実装するため、パフォーマンスがはるかに優れた優れた AOP 実装が他にもたくさんあります。

于 2012-07-17T09:20:32.853 に答える
0

MarshalByRefObjects を使用しても、インターセプトする呼び出しがほとんどない場合、パフォーマンスは許容されます。40 ミリ秒は、傍受プロセスだけでなく、「アドバイス」の実装によって引き起こされる非常に悪いオーバーヘッドのようです。

PostSharp のようなコンパイル時の AOP フレームワークを試すことはできますが、「アドバイスの実装方法」に問題がある場合は解決しません。

比較したい場合は、優れたパフォーマンスと使いやすさを備えたランタイム軽量 AOP フレームワークであるNConcern .NETを試すことができます。

于 2016-12-28T12:11:42.737 に答える