我想为我的MVC项目打造一个坚实的架构。
目前,项目有:
一个存储库用于
- reading / editing / deleting database objects
- creating ViewModels for page
- other general functions
我的初始结构是:
MvcApplication (MvcApplication.Common, MvcApplication.Domain, MvcApplication.Models)
- containing all the views, controllers, repositories
MvcApplication.Domain
- containing linqToSql data file
MvcApplication.Models (MvcApplication.Common, MvcApplication.Domain)
- containing ViewModels
MvcApplication.Common (MvcApplication.Domain)
- containing helper functions, and Enums
你能建议我为这个项目创建一个更好的架构吗?
我应该删除哪个图层?
ViewModel应该在域层吗?
答案 0 :(得分:0)
Viewmodels是视图实现的基础。我不觉得viewmodels应该在域中。
我会对数据访问做同样的事情。我将该层分开,并且只在域中具有持久性接口。然后,我可以在运行时注入我的数据访问。虽然YMMV在那里。取决于你以后交换DAL的可能性。与服务相同。域中服务的接口。单独组装实现。
像这样的DAL抽象在测试期间变得非常方便,所以我可以完全针对模拟或不同的存储机制运行我的单元测试。我不了解您,但我讨厌将我的逻辑测试绑定到某个数据库。有多个人运行测试,我怎么能确定测试数据库的完整性,除非我做sql express?
我甚至无法告诉你提取服务的次数,比如保存我的培根。什么,这项服务很慢,因为它全部同步?让我们更改服务实现以将消息推送到队列中。没有更改应用程序层或任何内容。