I am looking for some feedback on my ASP.NET MVC-based CMS application architecture.
Domain model - depends only on the classes of the system for determining types. So far, mostly anemia.
Repository Layer - abstract data access only called by the service layer
Service Level — Performs business logic on domain models. Provides view models to controllers.
ViewModelMapper is a service that moves back and forth between model models and domain models.
Controllers - super-thin functionality of the "road king" style, which interacts with the word service and speaks only in terms of viewing models, never domain models
My domain model is mainly used as data transfer objects (DTOs) and has minimal logic at the moment. I think this is good, because it does not depend on anything (even classes at the service level).
The service level is a bit complicated ... I want the controllers to have access to viewing modes for the convenience of programming the graphical interface. However, some of the services must talk to each other. For example, I have an event service that notifies other listener services when the content is tagged, when blog posts are created, etc. Currently, methods that accept domain models or return them are marked as internal, so they cannot be used by controllers.
? ? , , , , , " , ".
!