unt*_*dex 5 asp.net-mvc serialization mef appdomain asp.net-mvc-3
问题
我有一个ASP.NET MVC 3应用程序,具有插件/模块架构和多租户支持.MEF用于解析依赖关系并加载可插入部分.
每个模块由控制器,视图和其他对象组成(在体育上它是一个组件).模块加载到租户.
简单配置可能如下所示:
租户1:
租户2:
不同模块和不同版本的Dll分别存储在不同的物理位置.应用程序在一个AppDomain上运行(默认值为1).
但是,如果我们想在不同租户使用不同模块版本的情况下进行配置,我们会遇到在不同版本中加载相同程序集的问题.这意味着下面的场景不能完全正常工作,因为在从ModuleB解析类型时我们得到了组合不匹配异常(版本1.0和1.5被加载到MEF中,但是只有一个程序集已经通过程序集加载器加载到AppDomain中).
租户1:
租户2:
解?
因此,我们提出了一个解决方案,即将不同的租户及其模块/组件加载到单独的AppDomain中.这意味着我们的示例Tenant1和Tenant2被加载到AppDomain1和AppDomain2中.在ASP.NET MVC管道中,我们连接到控制器工厂,以便选择适当的应用程序域,如下所示:
问题(S):
不可能。如果您尝试使用不同的 AppDomain,ASP.NET 将会回来困扰您。
相反,使用基于角色的授权来控制不同模块的访问。
我刚刚写了一篇关于 ASP.NET MVC3 中的插件系统的文章:http://blog.gauffin.org/2012/05/griffin-mvccontrib-the-plugin-system/
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |