This document discusses patterns for website development including:
- Using domain models as pure POCO objects with no behavior that are shared across layers
- Having view models that are optimized for views with validation and helper methods
- Having controllers call tasks to retrieve data and map between domain and view models
- Implementing business logic in tasks that work with domain objects and call repositories
- Having repositories that encapsulate data access and transactions for domain aggregates