Tuesday, January 15, 2013

Suggestion for App Project Separation

Stolen from a chat with my friend +Chris Faulhaber ... A great breakdown of projects in a solution for an application.


  • Project.Domain: 
    • The structure, business rules, and persistence logic.  Every effort should be made to place code here instead of in UI projects.  No UI code should ever go here.
  • Project.Web: 
    • The web UI and controller code for the project.  Self-explanatory.
  • Project.Database: 
    • Any DB scripts.
  • Project.Service: 
    • If the project has a windows service, it usually goes here.  This is typically for polling services that have short or unpredictable intervals.  Long and predictable intervals should be setup as console apps that are run through the Windows scheduler.
  • Project.Tests: 
    • Unit tests.
  • Organization.Platform or Organization.Core: 
    • Shared code for multiple projects within an organization.  This can be further split into Organization.Platform.Domain and Organization.Platform.Web if needed (following the scheme above), but that's uncommon.