0

更新:我不清楚应该在什么情况下使用 AOP?由于我们可以将 AOP 用于日志记录、安全性(身份验证),请建议我们可以利用 AOP 的其他一些场景。

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

4

2 回答 2

2

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

因此,AOP 实际上是在运行时或编译时将这些功能小块嵌入到存在“横切”功能的代码中。

资源

目前,AOP 没有内置在 C# 中,但有以下框架可以构建 AOP:

线程数据的 AOP

通常,使用 AOP 跨线程共享数据不是可行的方法。开发人员还可以使用其他技术来做到这一点:

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

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

于 2009-09-16T07:49:30.790 回答
0

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

于 2009-09-21T05:35:25.863 回答