makotan _at_ gmail dot com

AOP

英語の(coreとかcrossとか)説明があるものはすべて頭の中から消去して、独自の説をお送りします(笑)
AOPをシンプルに言えば「透過的サービスを後から組み込む」為のもの。
サービスを作ってそれに対してAOPでXXXを追加するという場合、それは必ず元のサービスに対して透過的であるべき。
ここで言う透過的サービスとは、組み込む前と後で処理に違いは発生しない。新たな特徴(能力)が付け加えられた状態になる事。
では、AOPで組み込む対象の透過的サービスとは?

  • プロファイル
  • ログ
  • 事前条件・事後条件
  • リモート呼び出し
  • トランザクション
  • 一部の例外処理
  • ダミー処理(S2の場合)

これ以外のサービスを組み込む場合は、他の方法で解決する方法を十分に考慮して、他の方法では手間がかかりすぎるという場合にのみAOPを使うべき。
重要なポイントはAOPを使う事で、透過的サービスは別にテストが出来るので、テストをしやすくなる。定義ファイルが別にあるので。組み込んでいる事を外から確認出来る。AOPで組み込むものは共通なので、組み込みのミスが少ない。
逆に非透過的サービスに適用した場合は、AOPを組み込む前と後で動作が変わる。そのためにAOPを組み込んだ状態での再テストが必要。
AOPは諸刃の剣として慎重に使う事が肝心。