背景
我们正在重新设计内部Web应用程序(ASP.NET MVC3),目标是简化开发,尤其是部署。该应用程序是一个后台Web,几个团队开发模块。在过去的几年里,这已经在同一个项目中完成,然后在任何人需要发布时完全发布“所有内容”。不出所料,这种方法效果不佳。我们现在处于这样的情况:六个团队想要按照不同的时间表发布模块,这使得情况难以承受。
我们想要实现的目标:
问题
我们已经完成了满足所有三个要求的概念验证。使用DI容器处理模块间通信。这很有效 - 有一点需要注意。当模块具有某些依赖项的不同版本时,我们会得到版本不匹配。如果我们想避免回到我们拥有的东西并强迫每个人每次更新某些依赖项时重新部署,我们需要能够加载多个版本的依赖项。
据我了解,这将要求我们将模块加载到单独的AppDomain中。这似乎引发了一些问题。首先,一些讨论似乎表明这与IIS / ASP.NET在ThreadStatic变量等方面的效果非常差。其次,我们需要在域之间进行编组,这似乎是非常重要的,并且会增加很多复杂。第三,模块间沟通也会变得很痛苦。
我简要介绍了MAF,它至少似乎为这种类型的架构提供了一些框架支持,但它看起来也非常复杂......是否有更好的替代方案,无论是支持框架还是设计?