更新:我不清楚在什么情况下应该使用AOP?由于我们可以使用AOP进行日志记录,安全性(身份验证),请建议我们可以从AOP中获益的其他方案。
AOP可以用来在应用程序进程中的不同运行线程之间共享数据吗?
答案 0 :(得分:2)
当您需要减少代码库中的“交叉”功能时,面向方面编程是理想的选择。这意味着您有类需要实现的公共代码(日志记录,安全性),但您无法将该功能抽象为基类。
因此,AOP实际上正在减少这些功能,并在运行时或编译时将它们嵌入到存在“交叉”功能的代码中。
<强>资源强>
目前,AOP没有构建到C#中,但是以下框架可以构建AOP:
线程数据的AOP
通常,使用AOP跨线程共享数据是不可取的。开发人员可以使用其他技术来实现这一目标:
[ThreadStaticAttribute]
将此属性附加到字段以指示.NET运行时,以下字段对多个线程是唯一的
同步(最常用的技术)使用Mutexes
,Semaphores
,ReaderWriter
锁和EventWaitHandles
来同步对来自多个线程的本地或全局数据的访问。在C#中,lock
语句是Monitor
类的语法糖,可用于从单个线程“锁定”对对象的访问。
答案 1 :(得分:0)
我喜欢将AOP视为智能幕后代码生成(编译时)/执行(运行时),因此您几乎可以做任何事情。它具有传统代码生成的所有优点(和更多),没有它的缺点(例如可维护性)。