-
09-06-2019 - |
質問
解決
Castle-windsor を (まだ) 短時間しか見ていないので、それについてコメントすることはできませんが、postsharp を使用しました。
Postsharp はコンパイル時にウィービングすることで機能します。コードを変更するコンパイル後のステップをビルドにアドバタイズします。コードは、横断的な関心事をコードにプログラムしたかのようにコンパイルされます。これはランタイム ウィービングよりも若干パフォーマンスが高く、属性を使用するため Postsharp は非常に使いやすいです。AOP に属性を使用することは、DI に使用するほど問題はないと思います。しかし、それは私の個人的な好みにすぎません。
しかし...
依存性注入にすでに Castle を使用している場合、AOP にも使用すべきではない十分な理由がわかりません。実行時の AOP はコンパイル時よりも少し遅いですが、より強力でもあると思います。私の意見では、AOP と DI は関連する概念であるため、両方に 1 つのフレームワークを使用するのが良いと思います。ということで、次のプロジェクトでは AOP が必要なので、おそらくもう一度城のことを検討することになるでしょう。
他のヒント
PostSharp に関するいくつかの小さな問題...
PostSharp で私が経験した問題の 1 つは、asp.net を使用している間、PDB も同様に挿入されないため、PostSharp によってアセンブリに挿入された IL 命令の数だけ例外メッセージの行番号が「アウト」になることです :-)。
また、実行時に PostSharp アセンブリが利用できないと、実行時エラーが発生します。Windsor を使用すると、コードを再コンパイルすることなく、後日クロスカットをオフにすることができます。
(これが意味があるといいのですが)