C#,VB.net中有很多AOP实现。这是一些AOP实现:后锐网路Aspect.NET企业库3.0策略注入应用程序块AspectDNGDotSpect(.SPECT)在Spring.NET框架作为其功能的一部分威卡和莫克斯特温特大学对.NET的AOSD解决方案进行了详尽的分析Seasar.NET方面#拼图撰写*设定点NConcern .NET AOP框架....Net中AOP的最佳实现是什么?我应该用什么?
3 回答
HUWWW
TA贡献1874条经验 获得超12个赞
“最佳”是主观的。
首先,列出所需功能,体系结构等的列表。然后寻找可以满足您需求的选项,而又不引入不必要的复杂性。例如,有几种面向接口:您的代码当前是否面向接口?如果不是这样,则PostSharp可能是一个更好的选择(被编织到原始类中)。但是,当然,不能在运行时配置PostSharp。
智慧大石
TA贡献1946条经验 获得超3个赞
在.NET中进行面向方面的编程的最佳方法是使用众所周知的设计技术。例如,通过应用SOLID原则,您可以实现允许添加跨领域关注点所需的灵活性和模块化。如果您拥有设计权,那么您甚至可以在没有任何框架的情况下应用大多数跨领域关注点。认为OOP不适合执行AOP是一个谬论。
这里有一些指针:
不要依赖具体实例,而要依赖抽象。
不要在同一个类中混用跨领域的关注点和业务逻辑。
通过将带有业务逻辑的类包装在实现那些关注点的类(装饰器)中来添加横切关注点。
在设计中找到常见的工件,并对其进行平均建模,最好使用相同类型的抽象。看看这个和这个,例如。
当您有了正确的抽象之后,向系统添加新的横切关注点只是编写一个新的装饰器类并将其包装在正确的实现上。如果抽象是通用的,则可以将单个装饰器包装在一大类类中(这正是AOP的目的)。
尽管诸如动态代理和代码编织之类的技术可以使设计较差的应用程序变得更容易,但对于好的设计,确实没有其他选择。迟早您会被烫伤的。但这并不意味着不应使用动态代理生成和代码编织。但是,如果没有适当的应用程序设计,那么即使是那些技术也只能提供很少的帮助。
- 3 回答
- 0 关注
- 1141 浏览
添加回答
举报
0/150
提交
取消