TOP
PROFILE
MUSIC TUNE
BBS
LINK

2006年03月24日

AOPのサンプルを作ってみる

使い方や概念だけではなくて、何故に割り込みが出来ちゃうのよ?ってところのディープなところを知りたいと思い、色々と調べてながらRealProxyとContextBoundObjectの両方のサンプルを作ってみた。飾りの部分を極力なくしてとてもシンプルに作ってみると、比較的簡単に実装できるようですね。
まぁContextBoundObjectは内部で作成されるコンテキストやメッセージシンクのチェーンに関するメカニズムを把握してないと、呪文のように「とにかくこう書いておく」みたいなコードになるけどさ(^^;
ただこのシンプルAOPサンプルはクラス単位であるため、当然メソッド単位でウィーブの切り分けが出来ないと現実的にはあまり使えない。
そこで他のDI系アプリがやってるように設定、属性、規約という選択肢で判定させることになるのだろうが、正直設定で推すと確実に設定ファイルHELLに陥るし、RoRやSeaser2が「設定よりも規約」に向かった意味が身にしみて良く分かるわ。
あ、両サンプルをStopwatch(.NET2.0)で計測したら、ほぼ同じだったんだよなぁ・・もう少し規模を大きくして計測しないと分析にはならんか。

kazzzさんのブログ(すばらくしく詳細です)でAOPを実現する方法のひとつにTypeEmition方式が紹介されてましたが、ふとアバナのFWは?と思ってソースを追ってみると、やはりTypeEmitionっぽいですねぇ。
まぁ内部のオブジェクトの生成に一部ObjectBuilderを使っているようですが。

Posted by GAMMARAY at 2006年03月24日 12:03 | TrackBack
Comments
Post a comment









Remember personal info?