asp.net-mvc – 组合ASP.NET MVC Web应用程序的最佳实践(MEF,Are
我目前正在弄清楚如何重组现有的非常模块化的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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 使用辅助方法对MVC3 / Razor中的DropDown
- asp.net-mvc – 如何使用ASP.NET MVC 2在NHibernate上实现
- asp.net-mvc-2 – 将复杂对象从View传递给Controller:一个
- asp.net-web-api – 将JSON数组从Javascript传递到Web API
- dropdownlist事件不显示在属性窗口asp.net Visual Studio 2
- asp.net-mvc-4 – 使用asp.net MVC4,如何在默认情况下执行r
- asp.net 删除项目文件/文件夹IIS重启,Session丢失问题
- asp.net-mvc-3 – 在剃刀中使用@variable后有一个更简洁的逗
- asp.net-mvc-3 – 是否可能显示从ASP.NET MVC 3中的数据库的
- 在ASP.NET中生成图像缩略图?
- asp.net-core – 使用IdentityServer 4和WS-Fede
- asp.net – 我可以重新发布或携带POST数据(如果是
- asp.net-mvc-4 – 文本框中mvc中的Textchanged事
- asp.net – 反伪造cookie令牌和表单字段令牌在MV
- asp.net – 有没有办法以编程方式设置Elmah中的应
- asp.net-mvc – 在做PostAsync时为什么等待不起作
- asp.net-mvc – 同一页面上的ASP.NET MVC模型绑定
- asp.net-mvc-3 – 使用MVC3中的模型绑定ListBox
- asp.net-mvc – ModelState.IsValid总是返回fals
- asp.net-mvc – Ninject绑定在不同的控制器上