私は原則を理解していますが、実際のアプリケーションがいくつかの外にあるかどうかを確認するのに苦労しています。私に教えてください;)
4 に答える
サポート担当者に尋ねてください。ロギングはAOPの優れたアプリケーションではありません。彼らは、アプリ内でどのメソッドが呼び出されているかを気にしません。彼らはアプリが実行している重要なアクションに関心があり、その情報を理解できる方法で提示する必要があります。適切なログを作成するには、ログをアプリへの別のユーザーインターフェースとして扱い、それに応じて設計する必要があります。
AOPを使用してトレースを実装できると言った方が正確です。
また、トランザクション管理にも役立つとは思いません。単純なOO委任は、トランザクション管理とビジネスロジックを明確に分離していることがわかりました。
それでも、良い質問です!私は、AOPの議論が2つの陣営に分類されることを発見しました。
- 貧弱な設計をクリーンアップすることなく、変更を不十分な設計のコードにまとめることができます。
- 環境がトレースまたはデバッグを適切にサポートしていないため、トレースをアプリに織り込むなど、不十分な開発ツールを回避します。
Springの人々とEJB3仕様委員会はどちらも、AOPが宣言型トランザクションに役立つと考えています。
もちろん、セキュリティ。
「AOPInAction」には、サービス層の外部で永続層を呼び出さないなど、AOPを使用してアーキテクチャールールを適用する方法を示す優れた例があります。
リカード・エバーグの最新の頭脳の子であるQi4jは、動的なクラス変更にAOPを使用します。私はまだ完全に頭を悩ませていませんが、リッカードがそれを推し進めているのなら、いつか知りたいと思うでしょう。
AOPは、大規模なレガシーアプリケーションがあり、アプリケーション全体で全面的な変更を行いたい場合に非常に役立ちます。
最近、追加のCookie(セッションID以外)を使用してhttpセッションスコープを分割するために使用しました。それは、ひどく書かれたセッションバウンドコードからの多くの苦痛をすぐに和らげました。
また、Glassboxをチェックして、AOPが軽量の監視およびパフォーマンス管理ツールの作成にどのように役立つかを示す非常に良い例を確認してください。
AOPの使い方を探求し始めたばかりです。これまで、依存性注入と、一部のUIコードで双方向のデータバインディングをサポートするインターフェイスを実装するために使用してきました。