Planning my architecture for an MVVM application I come to this:
- MyApp.UI
- View
- MyApp.BusinessLayer
- ViewModel
- MyApp.DataAccessLayer
- RepositoryImplEF
- MyApp.DomainLayer
- DomainObject
- RepositoryInterface
- MyApp.Common
- Logging
- Security
- Utility (contains some reflection method used by many levels)
- CustomException
- MyApp.UnitTest
I was inspired by Domain-driven-desing, test-driven-development and onion architecture but not sure to have done all well.
I am not sure of a couple of things:
- where to put dependency injection configuration class? In the common project?
- where to put BusinessLayer interfaces? in Domain layer?
- where to put Common interfaces? in Domain layer? But Common in referenced from domain (for some reflection utilities and for DI if the response to 1. is yes) and circular reference isn't good