0

背景

我们正在重新设计一个内部 Web 应用程序 (ASP.NET MVC3),目的是简化开发,尤其是部署。该应用程序是一个后台网络,几个团队开发模块。在过去的几年里,这是在同一个项目中完成的,然后在任何人需要发布时对“所有内容”进行完整发布。不出所料,这并没有那么好。我们现在的情况是,有六个团队想要按不同的时间表发布模块,这让情况变得难以忍受。

我们想要实现的目标:

  1. 每个团队开发自己的独立模块,然后将其加载到框架中。
  2. 这样的模块应该是可部署的,而无需重新部署基础应用程序或任何其他模块。
  3. 模块需要能够向其他模块提供部分视图

问题

我们已经完成了满足所有三个要求的概念验证。模块间通信使用 DI 容器处理。这工作得很好 - 有一个警告。当模块具有某些依赖项的不同版本时,我们会得到版本不匹配。如果我们想避免在每次有人更新某些依赖项时返回我们拥有的内容并迫使每个人重新部署,我们需要能够加载多个版本的依赖项。

据我了解,这将要求我们将模块加载到单独的 AppDomain 中。这似乎引发了许多问题。首先,一些讨论似乎说这在 IIS/ASP.NET 中的 ThreadStatic 变量等方面效果很差。其次,我们需要在域之间进行编组,这似乎很重要,并且会增加很多复杂。第三,模块间的通信看起来也变得很痛苦。

我已经简要地看了一下 MAF,它至少似乎为这种类型的架构提供了一些框架支持,但它看起来也非常复杂......是否有更好的选择,或者一些支持框架,或者设计?

4

0 回答 0