asp.net-mvc – ASP.NET MVC DDD应用程序中的组合根
我正在阅读Mark Seemann目前的“.NET中的依赖注入”.我想知道组成DDD ASP.NET MVC应用程序的最佳方法是什么.
在简化的场景中,一般的经验法则是将域模型作为应用程序的核心,并且不会对数据层或表示有任何依赖性.它将暴露Presentation将使用的某些接口(因此依赖)和数据层将实现(因此依赖).所以这一切都很好而且清晰. 但是,现在,当我们撰写应用程序时.对于ASP.NET MVC应用程序,我们将在global.asax(http://blog.ploeh.dk/2011/07/28/CompositionRoot)中进行.我们的组合根将需要依赖所有层,因为它需要注册所有适用的类型. 这使得所有依赖项看起来都很混乱,现在Presentation层有一个对数据访问层的项目引用(在VS术语中).开发人员很容易犯错并直接使用数据形式的数据访问层,这将有效地耦合这些层. 有没有一个干净的方法来解决这个难题?将Composition Root放在表示层之外几乎是很好的,但在MVC中是不可能的. UPDATE 在问这个问题后,我发现了一个相关的问题: 其中一个原因是,对我来说概念更清晰 – 构图应该在最顶层.另一个原因是,在我的情况下,表示层中已经有许多DI对象(主要是查看模型映射器的域对象),我想将它们组合在一个位置. 这个帖子给了我一些想法,我认为我想做的事情可能是可能的. 解决方法
无论你如何阻止它,很容易做很多愚蠢的事情.不要在开发人员不做之后为您的应用程序建模.对它进行建模,以便正确地完成任务.
我的容器支持您的要求.在每个项目中创建一个模块,用于注册其他所有内容: public class CompositionRoot : IContainerModule { public void Register(IContainerRegistrar registrar) { registrar.RegisterType<ISomeType,SomeType>(); } } 在您的UI项目中,您只需加载所有dll: registrar.RegisterModules(Lifetime.Scoped,Environment.CurrentDirectory,"myproject.*.dll"); 就是这样(如果使用[Component]属性标记实现,也可以用一行替换大多数手动RegisterType等). https://github.com/jgauffin/griffin.container (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- [ASP.NET Core 2.0 前方速报].NET Core 2.0.3&
- asp.net-mvc – 与ASP.Net MVC混淆
- asp.net-mvc – 在视图ASP.NET MVC 4中禁用所需的特定于验证
- 如何在ASP.Net中设置Page.IsValid
- EE 519: Speech Recognition and Processing for Multimedi
- Shadow Copying导致ASP.NET应用启动很慢的解决办法
- asp.net-core – 无法解析目标框架’DNX,Version = v4.5.1’
- ASP.NET MVC要求我重新验证PNG文件,而不是GIF或JPEG
- 使用ASP.NET WebApi中的HttpClient异步读取分块内容
- ASP.Net MVC,使用javascript提交表单