How should my team decide between 3-tier and 2-tier architectures?
- by j0rd4n
My team is discussing the future direction we take our projects. Half the team believes in a pure 3-tier architecture while the other half favors a 2-tier architecture.
Project Assumptions:
Enterprise business applications
Business logic needed between user
and database
Data validation necessary
Service-oriented (prefer RESTful services)
Multi-year maintenance plan
Support hundreds of users
3-tier Team Favors:
Persistant layer <== Domain layer <== UI layer
Service boundary between at least persistant layer and domain layer. Domain layer might have service boundary between it.
Translations between each layer (clean DTO separation)
Hand roll persistance unless we can find creative yet elegant automation
2-tier Team Favors:
Entity Framework + WCF Data Service layer <== UI layer
Business logic kept in WCF Data Service interceptors
Minimal translation between layers - favor faster coding
So that's the high-level argument. What considerations should we take into account? What experiences have you had with either approach?