2

最近我开始学习 .NET 中的上下文(上下文绑定、上下文敏捷、消息接收器等)。几个警钟开始响起:

  1. 所有上下文绑定类都派生自 ContextBoundObject,而后者又派生自 MarshalByRefObject。MarshalByRefObject 是 .NET Remoting 体系结构的一部分。.NET Remoting 体系结构被认为是过时的。
  2. 大多数与 .NET 相关的书籍很​​少或根本不关注上下文的概念。
  3. MSDN 几乎没有提供任何关于 Contexts 的信息:解释了类,但没有提供卫星文章(例如“How To”、“Overview”、“Tutorials”等)。
  4. 大多数讨论上下文的文章和论坛主题都已有几年历史了。
  5. 除了同步上下文之外,.NET 框架似乎几乎没有使用上下文架构。

因此,我的问题是:.NET 中的上下文概念是否已过时并且在新的开发中应该避免使用?如果它已经过时,推荐什么替代品?

4

2 回答 2

4

是的,避免 MarshalByRefObject 和 ContextBoundObject 用于 AOP。

大约四年前,我使用上下文绑定 MarshalByRefObject 方法推出了一个自定义 AOP 解决方案。我当时就知道我会陷入困境,但还是照做了,因为 .NET 的许多 AOP 框架还很年轻。

.NET 使用 MarshalByRefObject 支持 AOP 的事实是一个令人高兴的意外。MBO 从未用于此目的,将 MBO 用于 AOP 是对 .NET 远程处理和 MBO 的原始意图的劫持。

这并不意味着 .NET 不能支持 AOP,只是应该使用支持 AOP 的框架(如 Spring.NET、PostSharp 等)以一种不那么“hacky”的方式来完成。

是一篇关于 .NET 的 AOP 框架的好文章,虽然有点过时了。

于 2010-04-12T14:13:14.263 回答
3

我有待纠正,但如果您仅限于使用“供应商”(re:Microsoft)代码,我相信 Unity 和/或 MS 企业库策略块中存在一定程度的 AoP。

于 2010-04-12T14:48:15.703 回答