加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 组合ASP.NET MVC Web应用程序的最佳实践(MEF,Are

发布时间:2020-12-15 19:04:06 所属栏目:asp.Net 来源:网络整理
导读:我目前正在弄清楚如何重组现有的非常模块化的ASP.NET MVC 3.0应用程序的架构.我有一个像结构的插件,以使现有的项目可扩展. 我搜索了不同的策略来制作模块化的Web应用程序,并找到以下内容.我想让你对这些想法发表评论. 单独项目中的MVC区域 对于每个插件,我想
我目前正在弄清楚如何重组现有的非常模块化的ASP.NET MVC 3.0应用程序的架构.我有一个像结构的插件,以使现有的项目可扩展.

我搜索了不同的策略来制作模块化的Web应用程序,并找到以下内容.我想让你对这些想法发表评论.

>单独项目中的MVC区域

对于每个插件,我想创建一个单独的ASP.NET MVC项目,其中包含控件,视图和视图模型的插件. “员工”模块将包含一个要列出,创建,更新和删除员工的区域.然而,这听起来不错,需要将AreaRegistration放置在“bin”目录中的所有区域.我找到一个方法将我的区域项目直接放在区域文件夹中,并从“/ Areas / [AreaName] / bin”文件夹解析区域程序集:

BuildManager.AddReferencedAssembly.Add(Assembly.LoadFrom(…));
AppDomain.CurrentDomain.AssemblyResolve += ResolveAssemblies;

这是非常好的工作,并允许我在主项目的区域文件夹中部署插件.我喜欢我正在使用由ASP.NET MVC开箱即用的区??域功能.

> MVC便携式区域(MVCContrib)

http://elegantcode.com/2012/04/06/mvc-portable-areas/

便携式区域似乎不是一个好办法,因为它们要求将视图编译为“区域”项目文件中的嵌入式资源.这将阻止IIS缓存.另一方面,我真的不能想象性能缺点真的是多大.

>使用MEF的基于MVC的模块

http://www.fidelitydesign.net/?p=104

为了在其他项目中创建松散耦合的服务,我非常依赖MEF.因此,我认为使用它来发现ASP.NET MVC模块/插件是一个好主意.我将最终使用ControllerFactory来实例化通过使用“导出”属性导出的控制器.这样我就可以完全控制插件实例化,并可以使用MEF来获取服务.然而使用MEF确实需要比使用MVC区域更多的工作,MVC区域解决了控制器的开箱即用.

>跨插件项目的实体框架

一个问题,到目前为止我无法解决,是如何在各个插件项目中分发实体的.目前我们使用Database First方法,它包含一个包含所有实体的* .edmx模型文件.即使使用DbContext或Code First,也不可能为一个数据库使用多个DbContext类.一个想法是使用MEF将不同插件的实体加载到中央DbContext类中.不过我不知道这是否是支持和/或推荐的设置.

解决方法

另一个选择是使用我的Griffin.MvcContrib.它为您照管所有管道,并允许您编写视图并使用少量代码更改的区域.

与IoC容器一起使用以获得强大的插件系统.

这是一篇文章,演示如何:http://www.codeproject.com/Articles/386674/ASP-NET-MVC-3-plug-in-architecture-using-Griffin-M

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读