なぜ AO の採用がこれほど遅いのか、私は困惑しています。主要な言語には豊富な実装がたくさんあります。私の推測では、今日の OO のように、それが自分たちを助けてくれる場所を人々が認識しないのは十分なパラダイム シフトであると思います。
では、非侵襲的なロギングを超えて、複雑さを軽減し、メンテナンスを改善し、システムの"ilities"を強化する AO を使用した、または使用する予定の方法は何ですか?
私は現在、本番環境で EntLib / Unity 経由で AOP を使用しています。
AOP を使用した作業単位パターンの実装については、http://www.agileatwork.com/unit-of-work-with-unity-and-aspnet-mvc/をご覧ください。
[UnitOfWork]
public void Process(Job job)
{
...
}
トランザクション管理。AOPの標準的な使用法であることは知っていますが、そのために使用すると本当に輝いています。
実際の状況で使用する機会はありませんでしたが、「アラウンドアドバイス」は非常に強力であると考えています。特に、多くの必要性を排除することでコードの複雑さを簡素化するために追加される価値についてはそうです。まれな状態をチェックします。
Spring AOP に同意します。
AOSD (AOP については説明しませんが、正確な理由はわかりません) は、設計上、ある程度のモジュール性を既に持っているミドルウェア/サービス指向アーキテクチャに非常に役立ちます。
私はこのコンテキストで、非常に限られた課金サービスを伴うテレフォニー サービスに使用しました。
また、いくつかのコードの分析を実行するために、一種のモジュラー インタープリター/コンパイラーを構築するためにも使用しました。
私の考えでは、1 つの問題はポイントカット言語であり、アドバイスを適用したい場所を正確に記述するのが難しい場合があります。もう1つの問題は構成です。解決されたかどうかはわかりませんが、アドバイスを注文するときに理解するのが難しい場合があります....
AOP は一般的ですが、AOP と呼ばれることはめったにありません。属性が使用される .NET プログラミングのすべての場所を調べます。属性は基本的に、多くのクラス/メソッド/パラメーターに適用できる分野横断的な動作です。
最近では、ASP.NET MVC プラットフォームで、セキュリティ、データ バインディング、例外処理などの幅広い分野横断的なコンポーネントに、属性が多用されるようになりました。
私の経験では、Spring では AOP はかなり一般的なようです。
難しさは、人々がアスペクトの観点から考えることに慣れていないことだと思います。コードを織り込むことは、コンパイル時であっても、各メソッドに実際に影響を与えているものを確認するのが難しいため、やや怖い場合があります。たとえば、espコンパイル時と実行時にウィービングを組み合わせて使用する場合。
コントローラーが 1 つある状況で使用し、たとえばサーブレットか Web サービスかを追加します。また、これを使用してデータベースを抽象化したので、データベース接続とデータベースに最適化されたクエリをアプリケーションに組み込むことができました。
e ハードウェア検証言語は AOP を使用します。