gpt4 book ai didi

c# - AspectF(一种Fluent Aspect Framework)是一种类AOP的设计,可以放心使用吗?

转载 作者:太空狗 更新时间:2023-10-29 17:51:24 24 4
gpt4 key购买 nike

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 并不是设计成 AOP 替代品,而是一种实现“关注点分离并保持代码整洁”的方法。

一些想法/问题:

  • 随着项目的发展,有没有想过使用这种编码风格?
  • 它是可扩展的架构吗?
  • 性能问题?
  • 与真正的 AOP 解决方案相比,可维护性如何?

最佳答案

我不是要抨击这个项目,但是恕我直言,这是在滥用 AOP。方面并不适合所有情况,这样使用只会妨碍可读性。

此外,我认为这忽略了 AOP 的要点之一,即能够在不触及底层代码的情况下添加/删除/重新定义方面。

方面应该在受影响的代码之外定义,以使它们成为真正的横切关注点。在 AspectF 的案例中,方面嵌入受影响的代码,这违反了 SoC/SRP .

就性能而言,没有任何惩罚(或者可以忽略不计),因为没有运行时 IL 操作,正如 codeproject 文章中所解释的那样。但是,我从未遇到过 CaSTLe DynamicProxy 的任何性能问题。

关于c# - AspectF(一种Fluent Aspect Framework)是一种类AOP的设计,可以放心使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com