60

アプリケーションの設計に AOP が効果的に関与する可能性のあるケースを示したいと思います。これまでに会ったのは次のとおりです。

  • ロギング関連
  • セキュリティチェック
  • 取引管理
  • レガシーアプリケーションの微調整

他に何か?

(Spring のプロキシベースの AOP である必要はなく、むしろ JBoss AOP です。)

(関連する質問)

4

11 に答える 11

33

使用例を 2 つ挙げます。

  • リモート管理のために JMX にオブジェクトを自動的に登録します。クラスにアノテーションが付けられている場合、@AutoRegisterそのクラスの新しいインスタンス化を監視し、それらを JMX に自動的に登録するアスペクトがあります。

  • 監査ログ (ゴールド スタンダードの AOP ユース ケース)。少し粗いですが、一般的なアプローチは、監査可能なアクションを表すメソッドに注釈を付けることです。Spring Security のようなものと組み合わせると、次のことについてかなり良いアイデアを得ることができます。

    • ユーザーは誰ですか
    • 彼らが呼び出しているメソッド
    • 彼らが提供しているデータ
    • メソッドが呼び出された時刻
    • 呼び出しが成功したかどうか (つまり、例外がスローされたかどうか)
于 2010-02-04T03:25:30.897 に答える
11
  • 例外処理: try ... catch、catch、catch などの恐ろしいリストを繰り返す必要はありません。また、例外処理の一貫性が保証されていることも意味します。
  • パフォーマンスの監視: アスペクトの使用は邪魔にならず、事後に実行でき、必要がなくなったらオフにできるため、非常に便利です。

うわー... 10年前-AOPにはあまりありませんでした...ここにいくつかあります

  • コンストラクターにアクセスできないオブジェクトをカスタマイズできるようにする (jpa エンティティーなど)
  • セキュリティ ルールの実装 (セキュリティは、ユーザーがこのメソッドを呼び出すことを許可されていないことを示しています - AOP はそれを実装できます)
  • トランザクション マネージャー (開始、コミット、ロールバック)
  • キャッシング - メソッドの結果をキャッシュし、再度呼び出したくない
于 2010-02-05T06:42:15.817 に答える
7

適用性の観点から AOP のカバレッジを確認するには、Aspect-Oriented-Software-Development-Use-Casesという本を読むことを強くお勧めします。この本では、AOP を使用した機能要件と非機能要件のユース ケースについて詳しく説明しています。その後、ロギング、トレース、セキュリティなどよりも多くの要件にアスペクトを使用できることがわかります。

于 2010-02-04T10:11:39.950 に答える
6

メソッドがステートレスである場合のメソッド レベルのキャッシング (つまり、同じパラメーター値で繰り返し呼び出されたときに同じ値を返すことを意味します)。これは、データベース ヒットを回避するため、DAO メソッドの場合により効果的です。

于 2010-02-04T06:37:38.163 に答える
5

ソフトウェア ライセンス管理に使用します。つまり、コンピュータに特定のライセンスがインストールされている場合にのみソフトウェアの実行を許可します。これはセキュリティチェックの一種であるため、リストされている用途とそれほど違いはありません。

ここで実用的な実装を説明するブログエントリを公開しました

于 2010-11-21T00:12:20.987 に答える
4
  • 読み取り/書き込みロック。同じスニペットを複製する代わりに、アスペクトを使用して、読み取りロックまたは排他ロックを必要とするメソッドを定義しました。
于 2010-02-04T08:43:16.537 に答える
4

あなたがリストしたすべてのものに加えて、AOPの1つの効果的な使用法は検証です。ユーザー入力またはビジネス オブジェクトの検証。

必見の関連記事。

于 2010-02-04T04:05:33.587 に答える
1

INotifyPropertyChangedおよび同様のホラー。

基本的に、このようなコードがある場合は常に、アスペクトを使用すれば完了です。

于 2010-07-16T15:17:43.150 に答える
1

コード コントラクトのランタイム チェック。.NET のコード コントラクトは、 AOP を次の目的で使用します。

ランタイム チェック。私たちのバイナリリライターは、プログラム実行の一部としてチェックされるコントラクトを注入することによってプログラムを変更します。

于 2015-10-02T15:24:44.783 に答える
1

また、次の側面もお勧めします。

  • 非同期メソッド呼び出し
  • モニタリング

Spring と tcServer (開発者) を使用すると、すべての Spring Bean を @Component アノテーションで簡単に監視できます。使用時間、例外を含む入力および戻りデータを確認できます。

于 2010-02-10T15:06:29.843 に答える
1

AspectJ を使用して AOP を実現します。上記以外のユースケースは次のとおりです。

  • メソッド呼び出しへのアクセスを少数のクラスのみに制限します。
  • 選択したメソッド/クラス/フィールドに自動的に注釈を付けます。
于 2016-01-04T04:57:07.877 に答える