2012-02-08 73 views
0

我想为我的MVC项目打造一个坚实的架构。改善Asp.net MVC层架构

目前,项目有:

  • 数据库对象(linqToSql)用于视图
  • 的ViewModels
  • 一个仓库用于

     - 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 

你能不能指点我创造了这个项目更好的架构?

我应该删除哪一层?

应该ViewModels在域的层?

回答

0

视图模型是视图实现的基础。我不觉得视图模型应该在域中。

我会做同样的事情与数据访问。我将该层分开,并且只有在域中具有持久性的接口。然后我可以在运行时注入我的数据访问。 YMMV在那里。取决于你以后换出DAL的可能性。与服务一样。域中服务的接口。实现的单独组装。

像这样的DAL抽象在测试过程中变得非常方便,所以我可以完全运行我的单元测试对付嘲笑或不同的存储机制。

我不了解你,但我讨厌有我的逻辑测试绑定到某些数据库的地方。有多人在运行测试,我怎么能确定测试数据库的完整性,除非我做sql express?

我甚至不能告诉你抽象像这样的服务节省了我的培根的次数。什么,这项服务是缓慢的,因为它的全部同步?让我们更改服务实现以在队列中推送消息。没有更改应用程序层或任何东西。