AOP可以用来在应用程序进程中的不同运行线程之间共享数据吗?

时间:2009-09-16 07:19:13

标签: c# .net aop aopalliance

更新:我不清楚在什么情况下应该使用AOP?由于我们可以使用AOP进行日志记录,安全性(身份验证),请建议我们可以从AOP中获益的其他方案。

AOP可以用来在应用程序进程中的不同运行线程之间共享数据吗?

2 个答案:

答案 0 :(得分:2)

当您需要减少代码库中的“交叉”功能时,面向方面编程是理想的选择。这意味着您有类需要实现的公共代码(日志记录,安全性),但您无法将该功能抽象为基类。

因此,AOP实际上正在减少这些功能,并在运行时或编译时将它们嵌入到存在“交叉”功能的代码中。

<强>资源

目前,AOP没有构建到C#中,但是以下框架可以构建AOP:

线程数据的AOP

通常,使用AOP跨线程共享数据是不可取的。开发人员可以使用其他技术来实现这一目标:

  • [ThreadStaticAttribute]将此属性附加到字段以指示.NET运行时,以下字段对多个线程是唯一的

  • 同步(最常用的技术)使用MutexesSemaphoresReaderWriter锁和EventWaitHandles来同步对来自多个线程的本地或全局数据的访问。在C#中,lock语句是Monitor类的语法糖,可用于从单个线程“锁定”对对象的访问。

答案 1 :(得分:0)

我喜欢将AOP视为智能幕后代码生成(编译时)/执行(运行时),因此您几乎可以做任何事情。它具有传统代码生成的所有优点(和更多),没有它的缺点(例如可维护性)。