0

更新:どのような状況でAOPを使用すべきか明確ではありませんか?AOPはロギング目的、セキュリティ(認証)に使用できるため、AOPを利用できる他のシナリオをいくつか提案してください。

AOPを使用して、アプリケーションプロセスで実行中のさまざまなスレッド間でデータを共有できますか?

4

2 に答える 2

2

アスペクト指向プログラミングは、コードベース内の「横断的」機能を減らす必要がある場合に理想的です。これが意味するのは、クラスが実装する必要のある共通のコード(ロギング、セキュリティ)がありますが、その機能を基本クラスに抽象化することはできないということです。

したがって、AOPは実際にこれらの機能を小さくし、実行時またはコンパイル時に、「横断的」機能が存在するコードにそれらを埋め込みます。

資力

現在、AOPはC#に組み込まれていませんが、次のフレームワークでAOPを構築できます。

スレッドデータのAOP

一般に、AOPを使用してスレッド間でデータを共有することは、最善の方法ではありません。開発者がそれを行うために利用できる他のテクニックがあります:

  • [ThreadStaticAttribute]この属性をフィールドに追加して、次のフィールドが複数のスレッドに固有であることを.NETランタイムに指示します

  • 同期(最も一般的な手法)、、ロックを使用MutexesしてSemaphores、複数のスレッドからのローカルまたはグローバルデータへのアクセスを同期します。C#では、ステートメントはクラスの構文糖衣構文であり、単一のスレッドからオブジェクトへのアクセスを「ロック」するために使用できます。ReaderWriterEventWaitHandleslockMonitor

于 2009-09-16T07:49:30.790 に答える
0

私はAOPをスマートな舞台裏のコード生成(コンパイル時)/実行(実行時)と考えるのが好きなので、基本的にほとんど何でもできます。従来のコード生成のすべての利点(およびそれ以上)があり、欠点(保守性など)はありません。

于 2009-09-21T05:35:25.863 に答える