Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Inverting Dependencies: Where Layered Architecture Gets Stuck
In a layered architecture compile-time dependencies flow downward, so business rules get locked to EF Core, SQLite and external APIs; the fix is to keep the runtime call direction but move the interfaces into the domain project that uses them, turning the reference arrow inward. Shown with Bookstore's "test without a database" and "switch carriers" scenarios, the "I added an interface, done" fallacy, and the idea shared by Hexagonal, Onion and Clean.
Layered Architecture: The Real Responsibilities of Presentation, Business, and Data Layers
The real promise of Layered Architecture is the isolation that closed layers provide, but because ProjectReference is transitive by default in .NET, Web silently sees Data through Business; DisableTransitiveProjectReferences moves that rule into the compiler. N-layer vs N-tier, closed and open layers, sinkholes, DB-centric design and the problem with the dependency direction.