Im currently trying to refactor a project(asp.net mvc) that doesnt have any separation at all. just folders :s
We have a Tests Project but we arent very good at TDD so its not something we are really working on as of now.
I would like to have a clearer separation on the different responsibilities that the project has to address and would appreciate some advice on a good project structure that achieves this.
Please help. thanks in advance
I would suggest following a Domain Driven Design (DDD) and one suggested way of laying this out would be creating the following projects:
Company.Project.Web
<-- Your MVC Application, though you can still use WebForms
Company.Project.Domain
<-- Data Transfer Objects (DTO's), ViewModels, Business Logic, Events
Company.Project.Data
<-- Repository Interfaces
Company.Project.Data.EF
<-- EntityFramework Specific Implementation of Repositories
Company.Project.Model
<-- Your EF CodeFirst Classes
Company.Common
<-- A common project of utilities and/or extensions
I would suggest you take a look at Project Silk http://silk.codeplex.com/ from the patterns and practices team. Great reference implementation of DDD, Repository, and MVC as well as mixing in HTML 5 and jQuery (vNext).
We use a similar design to that mentioned by jdmonty but a bit simpler. We do the following:
The Web project is dependent upon the Services project. The Services project is dependent upon the Domain project.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With