AOP
英語の(coreとかcrossとか)説明があるものはすべて頭の中から消去して、独自の説をお送りします(笑)
AOPをシンプルに言えば「透過的サービスを後から組み込む」為のもの。
サービスを作ってそれに対してAOPでXXXを追加するという場合、それは必ず元のサービスに対して透過的であるべき。
ここで言う透過的サービスとは、組み込む前と後で処理に違いは発生しない。新たな特徴(能力)が付け加えられた状態になる事。
では、AOPで組み込む対象の透過的サービスとは?
- プロファイル
- ログ
- 事前条件・事後条件
- リモート呼び出し
- トランザクション
- 一部の例外処理
- ダミー処理(S2の場合)
これ以外のサービスを組み込む場合は、他の方法で解決する方法を十分に考慮して、他の方法では手間がかかりすぎるという場合にのみAOPを使うべき。
重要なポイントはAOPを使う事で、透過的サービスは別にテストが出来るので、テストをしやすくなる。定義ファイルが別にあるので。組み込んでいる事を外から確認出来る。AOPで組み込むものは共通なので、組み込みのミスが少ない。
逆に非透過的サービスに適用した場合は、AOPを組み込む前と後で動作が変わる。そのためにAOPを組み込んだ状態での再テストが必要。
AOPは諸刃の剣として慎重に使う事が肝心。