Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Dependency'leri İçe Çevirmek: Layered Architecture Nerede Tıkanır?
Layered Architecture'da compile-time dependency yukarıdan aşağı aktığı için iş kuralları EF Core'a, SQLite'a ve dış API'lere kilitlenir; çözüm, runtime çağrı yönünü koruyup interface'leri onları kullanan domain project'ine taşıyarak referans okunu içe çevirmektir. Bookstore'da veritabanı olmadan test yazma ve kargo firmasını değiştirme senaryolarıyla, "interface ekledim, oldu" yanılgısı ve Hexagonal, Onion, Clean'in ortak fikri.
Dependency Inversion Principle: DIP, DI ve IoC Arasındaki Fark ve Composition Root
DIP, compile-time bağımlılığın detaydan abstraction'a doğru akmasını ve abstraction'ın onu kullanan tarafa ait olmasını ister; DI yalnızca bağımlılığı dışarıdan verme tekniğidir, IoC ise akışın framework'e geçmesidir. Interface'in hangi project'te durduğu, Program.cs'in composition root olarak kullanılması ve service locator'ın neden DIP'i boşa çıkardığı.