2009-09-13 13 views
43

アスペクト指向プログラミングの周りに頭を抱くようなリソースはありますか?C#でのアスペクト指向プログラミング

PS:私はちょうどそれの周りにあなたの頭を取得しないライブラリやフレームワーク.NETのために利用できるまたはC#:)

+0

を使用するためのだまされやすい人のように私には思える(...、例外処理をトレースし、タイミングをログ)AOPを実装する方法を説明していますhttp://stackoverflow.com/questions/325558/aspect-oriented-programming-examples – Graviton

+0

[Aspect Oriented Programming](http://izlooite.blogspot.com/2010/06/aspect-oriented-programming.html#comment-フォーム) –

+0

.NETのAOPをチェックしてください - http://manning.com/groves(恥知らずな自己宣伝ですが、 levant!) –

答えて

51

、AOプログラミングを理解しておく必要があります:それは、次のようなフックイベントへの能力でありますオブジェクトの作成、プロパティの設定などを行い、一般的な機能をそれらに関連付けます。これには、関連するコンテキストが設定されます。

C#にはこのための組み込み機能がないため、「バイトコードウィービング」(つまり実際に呼び出しを行い、クラスに直接コードを書き込む)を行うには、PostSharpのようなフレームワークが必要です。

+4

サイドノートでは、http://www.postsharp.org/には、それが何であり、どのような用途であるかを詳しく説明しています。 – RCIX

+0

はいポストシャープは良いことです(良いサイトもあります) – TheVillageIdiot

+1

ランタイムエミットも良いです。 Unityと他の人は、反射を使ってメソッドを傍受します。また、.netはJeanのようにContextBoundObjectsフックを持っています。残念ながら、コンテキストにバインドされたオブジェクトでは、巨大なperfヒットがあります。 – AbdElRaheim

2

アスペクト指向プログラミングとは、コードでこれらの機能を実装するのではなく、コードに織り交ぜるロギングまたはセキュリティ/アクセス制御機能を定義できるメタレベルを持つことを意味します。だから、一次元ではなく、二次元をプログラムする必要があります。

私はこれが非常に控えめに聞こえるかもしれませんが、それを理解すれば簡単です。

AOPは、呼び出しを傍受してバックグラウンドで処理するプロキシクラスで動作することがよくあります。

3

タイムリーな質問はありますか?

Hereは聞く価値のあるポッドキャストです。
これはあなたにAOPとは何かの概要を教えてくれますか?どこで使うことができますか?

希望に役立ちます。