Omar Al Zabirは、「AOPスタイルのコーディングを行うためのより簡単な方法」を探しています。
彼はAspectFと呼ばれるフレームワークを作成しました。これは、「コードにアスペクトを追加するための流暢で簡単な方法」です。
コンパイル時やランタイムウィービングを行わないため、これは真のAOPではありませんが、AOPと同じ目標を達成しますか?
AspectFの使用例を次に示します。
public void InsertCustomerTheEasyWay(string firstName, string lastName, int age,
Dictionary<string, string> attributes)
{
AspectF.Define
.Log(Logger.Writer, "Inserting customer the easy way")
.HowLong(Logger.Writer, "Starting customer insert", "Inserted customer in {1} seconds")
.Retry()
.Do(() =>
{
CustomerData data = new CustomerData();
data.Insert(firstName, lastName, age, attributes);
});
}
AspectFの目的をさらに明確にする著者によるいくつかの投稿は次のとおりです。
- 関心の分離のためにアスペクトをコードに入れるAspectFの流暢な方法(ブログ)
- AspectF(グーグルコード)
- よりクリーンで保守可能なコードのアスペクトを追加するAspectFの流暢な方法(CodeProject)
著者によると、AspectFはAOPの代替として設計されているのではなく、「関心の分離を実現し、コードをきれいに保つ」方法であると私は考えています。
いくつかの考え/質問:
- プロジェクトの成長に合わせてこのスタイルのコーディングを使用することについて何か考えはありますか?
- それはスケーラブルなアーキテクチャですか?
パフォーマンスの懸念?- 保守性は、真のAOPソリューションとどのように比較されますか?