【发布时间】:2009-09-16 07:19:13
【问题描述】:
更新:我不清楚应该在什么情况下使用 AOP?由于我们可以将 AOP 用于日志记录、安全性(身份验证),请建议我们可以利用 AOP 的其他一些场景。
AOP可以用来在应用进程中不同运行线程之间共享数据吗?
【问题讨论】:
标签: c# .net aop aopalliance
更新:我不清楚应该在什么情况下使用 AOP?由于我们可以将 AOP 用于日志记录、安全性(身份验证),请建议我们可以利用 AOP 的其他一些场景。
AOP可以用来在应用进程中不同运行线程之间共享数据吗?
【问题讨论】:
标签: c# .net aop aopalliance
当您需要减少代码库中的“横切”功能时,面向方面的编程是理想的选择。这意味着您拥有类需要实现的通用代码(日志记录、安全性),但您不能将该功能抽象为基类。
因此,AOP 实际上是在运行时或编译时将这些小功能块嵌入到您的代码中,其中存在“横切”功能。
资源
目前,AOP 没有内置在 C# 中,但有以下框架可以构建 AOP:
线程数据的 AOP
一般来说,使用 AOP 跨线程共享数据不是可行的方法。开发人员还可以使用其他技术来做到这一点:
[ThreadStaticAttribute] 将此属性附加到字段以指示 .NET 运行时以下字段对于多个线程是唯一的
同步(最常用的技术) 使用Mutexes、Semaphores、ReaderWriter 锁和EventWaitHandles 同步从多个线程访问本地或全局数据。在 C# 中,lock 语句是 Monitor 类的语法糖,可用于“锁定”单个线程对对象的访问。
【讨论】:
我喜欢将 AOP 视为智能的幕后代码生成(编译时)/执行(运行时),因此您基本上可以做任何事情。它具有传统代码生成的所有优点(甚至更多),但没有缺点(例如可维护性)。
【讨论】: