VB.NET でアスペクト指向 (1)

  • このエントリーをはてなブックマークに追加
  • このエントリーをはてなブックマークに追加

AOP を理解するには、実際にプログラミングした方が理解し易いと思うので、AOPアライアンスの Javadoc AOP Alliance specifications を元に、インタフェースを作成してみようと思います。が、その前にまず知っておきたいのは、VB.NET で処理の横取り(インターセプト)はどうすれば良いのか?です。
正直、全く思いつきません・・・
と言うより、そんなこと出来るの?って感じです。
あるクラスのあるメソッドを実行したときに、あたかもそのメソッドを実行してるかのごとく別の処理を割り込ますわけで・・・


そういえば、デザインパターンに Proxy パターンがあったなと思い出したので proxy で調べてみると、デザインパターンを実装するのではなく、.NET の透過プロキシってのが処理割り込みできるらしい。
RealProxy クラス (System.Runtime.Remoting.Proxies)
簡単に言うと、
この RealProxy を継承したクラスを作成する。
そのクラスにある型(Type)を指定してインスタンス生成(New)を任せる。
生成されたインスタンスは中身は違ってもある型(Type)と同じようにメソッドを持つ事になる。
なので、使う側は意識しないって事みたい。
とりあえずメソッドへの処理割り込み方法は分かったので、インタフェースを定義してみる。
Spring.NET と S2Container.NET はメソッドに対してインターセプトするみたい。
Aopアプライアンスのドキュメントでは、MethodInterceptor が存在してます。
これらを参考にして、現段階で完全に不要と思われるものは無視して定義すると下図の様になった。

AopStep1


IMethodInterceptor の基本クラスにあたる、IInterceptor や IAdvice は特に必要ないように思えますが、とりあえず定義してあります。
次はこれらのインタフェースの実体を実装してみます。

関連記事

VB.NET でアスペクト指向
VB.NET でアスペクト指向 (2)

関連記事:

Pocket
Bookmark this on Delicious
Bookmark this on Google Bookmarks

コメントを残す

メールアドレスが公開されることはありません。

*

This blog is kept spam free by WP-SpamFree.