【问题标题】:Data access within an aspect方面内的数据访问
【发布时间】:2013-08-16 18:56:55
【问题描述】:

假设我有以下分层架构...

我想实现一个需要某种形式的数据访问的方面。堆栈中的每个项目都引用了方面框架。因此,由于循环引用,我不能让方面程序集引用数据访问层。

那么我应该如何在方面内进行数据访问?

【问题讨论】:

  • 你打算在什么层使用这个方面?
  • @MagnusGrindalBakken 实际上我现在已经想出了解决我的问题的方法,但这只是因为方面仅用于服务层,这意味着我可以从 BLL 和 DAL 中删除引用。但是,如果所有层都需要方面,我仍然对如何完成它感兴趣,这是一个横切关注点。

标签: c# architecture aop postsharp aspect


【解决方案1】:

这是使用运行时依赖项解决的。

最好的方法是inversion of control 模式。

您的数据访问可以实现接口,并且可以在运行时通过使用控制反转框架(如Castle WindsorNinject)解析谁实现整个接口来检索它们的实现。 p>

您的方面将通过整个接口而不是设计时引用与数据层交互,因此您将避免编译时循环引用。

我想补充一点说明:运行时依赖解析不是产生循环引用以避免编译时错误的灵丹妙药。

有时您的实现可能是曾经在设计时引用的程序集的一部分,可能以循环引用结束,但这只是巧合:它可能在该程序集中或仅限实现 em> 一个,或者只是一个第三方程序集。谁知道;)

【讨论】:

  • 我们实际上已经使用了 StructureMap 和一个组合根程序集来处理我们的 IoC。我们还在每一层的单独程序集中都有我们的接口,这意味着我们实际上可以将引用从方面添加回接口程序集,而无需循环引用。谢谢你的灯泡时刻!
  • @BrettPostin 没问题,哈哈哈 ;) 当地球另一端的人像你一样思考时,这很好,不是吗?!
猜你喜欢
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 2012-06-30
  • 2014-08-02
  • 2011-11-30
  • 1970-01-01
相关资源
最近更新 更多