【问题标题】:AOP can be use to share data among different running threads in application process?AOP 可以用来在应用程序进程的不同运行线程之间共享数据吗?
【发布时间】:2009-09-16 07:19:13
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net aop aopalliance


    【解决方案1】:

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

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

    资源

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

    线程数据的 AOP

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-19
        • 1970-01-01
        • 2018-08-05
        • 2011-03-30
        • 2019-05-10
        • 1970-01-01
        • 2017-06-25
        相关资源
        最近更新 更多