Omar Al Zabir正在寻找“一种更简单的 AOP 风格编码方法”。
他创建了一个名为AspectF的框架,这是“一种将 Aspect 添加到代码中的流畅且简单的方法”。
这不是真正的 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 流畅的方式将 Aspects 放入代码中以实现关注点分离(博客)
- AspectF(谷歌代码)
- AspectF Fluent 方式为更清晰的可维护代码添加方面(CodeProject)
根据作者的说法,我认为 AspectF 的设计与其说是 AOP 的替代品,不如说是一种实现“关注点分离并保持代码整洁”的方式。
一些想法/问题:
- 随着项目的发展,对使用这种编码风格有什么想法吗?
- 它是可扩展的架构吗?
性能问题?- 可维护性与真正的 AOP 解决方案相比如何?