Tutorials Clean Architecture & DDD Mastery
The Infrastructure Layer: Bridging to the outside world
On this page
The Toolset
The Infrastructure Layer contains the actual code that talks to your database, your file system, and external third-party APIs.
1. Implementing Domain Interfaces
This is where the 'magic' of Dependency Inversion happens. If the Domain layer defines IUserRepository, the Infrastructure layer contains the SqlServerUserRepository that uses EF Core's DbContext. The rest of the app doesn't care—it only sees the interface.
2. Third-Party Integration
Need to send an SMS? Use **Twilio**. Need to send an Email? Use **SendGrid**. In Clean Architecture, you create an interface in the Application layer (e.g., IEmailService) and put the Twilio/SendGrid code in the Infrastructure layer. If you want to switch to AWS SES, you only touch this project.
3. Architect Insight
Q: "Should I put my migrations in this project?"
Architect Answer: "YES. Entity Framework Migrations are an 'Infrastructure' detail. By keeping them here, you keep your other projects clean and focused on business logic. The Infrastructure layer is the 'Disposable' part of your app—the part you can swap and change as tech evolves without losing your core investment."