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?