⚡ÖZET VE TEKNİK CEVAP
Tipik MVC uygulamalarında Servis katmanı hızla 3.000 satırlık devasa 'God Servislere' dönüşür (40 ilgisiz metot barındıran KullaniciServisi, SiparisServisi). Bu şişmiş sınıflar iş kurallarını altyapı işleriyle karıştırır: E-posta gönderme, SQL sorgulama, transaction yönetimi ve HTTP doğrulaması tek bir metodun içine tıkılır. 5 geliştirici aynı anda SiparisServisi dosyasında çalıştığında çakışmalar ve regresyonlar patlar. Clean Architecture, bu kaosu Kullanım Durumu Etkileşimcileri (Use Case Interactors) ile çözer: Her sınıf yalnızca tek bir iş akışını temsil eden tek amaçlı bir yapıdır (SiparisOnaylaKullanimDurumu, SifreDegistirKullanimDurumu). Bir Interactor saf bir İstek DTO'su alır, domain modellerini yöneterek iş kurallarını uygular, soyut portları (veritabanı, bildirim arayüzleri) çağırır ve bir Yanıt DTO'su döner—HTTP controller'larından ve veritabanı motorlarından tamamen bağımsızdır.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Bir sigorta hasar portalında 8 geliştiricinin sürekli çakışma yaşadığı 4.500 satırlık bir HasarServisi vardı. Hasar kaydı açmak 12 saniye sürüyordu çünkü servis veritabanı işlemlerini, PDF üretimini, sahtekarlık kontrol API'sini ve e-posta gönderimini tek bir devasa metotta yapıyordu. Ekip Clean Architecture'a geçti: Servisi bağımsız use case sınıflarına böldüler (HasarBildirKullanimDurumu, HasarOnaylaKullanimDurumu, TazminatHesaplaKullanimDurumu). PDF ve sahtekarlık kontrolleri çıkış portlarına bağlandı. Birim testleri sunucu olmadan 40 milisaniyede koşmaya başladı ve kod çakışmaları sıfırlandı.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaClean Architecture'da bir Use Case Interactor'ın temel sorumluluğu nedir?
Bir Use Case Interactor sınıfı neden yalnızca tek bir `execute()` metoduna sahip olmalıdır?
Clean Architecture: Kullanım Durumu Etkileşimcileri (Use Case Interactors) ve Uygulama Orkestrasyonu — Sıkça Sorulan Sorular
Clean Architecture'da veritabanı işlem sınırları (`@Transactional`) nerede yönetilmelidir?
Use Case Interactor seviyesinde veya use case işletimini saran bir transaction dekoratörü/aracısı (interceptor) üzerinden.
Use Case Interactor'lar Express veya Fastify gibi web framework'lerine bağımlı olmadan HTTP controller'larıyla nasıl haberleşir?
Yalnızca temel tipler ve saf veri yapıları içeren İstek ve Yanıt DTO'ları (Data Transfer Objects) üzerinden.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
Use Case Interactor yapıları Clean Architecture'da tek amaçlı iş akışlarını temsil eder.
- ▸
Framework bağımlılığı olmadan domain modellerini, depoları ve bildirim portlarını orkestre ederler.
- ▸
3.000 satırlık şişkin 'God Servisleri' yok eder ve geliştirici kod çakışmalarını önler.
- ▸
Framework'ten bağımsız saf İstek/Yanıt DTO veri yapıları alır ve döner.
Yaygın Yanılgılar
- ✗
Yanılgı: Clean Architecture gereksiz yere çok fazla şablon sınıf oluşturur (Gerçek: Tek amaçlı sınıflar değişiklikleri izole ederek büyük kurumsal projelerin yönetimini çok kolaylaştırır).
- ✗
Yanılgı: İş kuralı doğrulamaları tamamen HTTP controller içinde yapılmalıdır (Gerçek: Controller sadece sözdizimini doğrular; temel iş kuralları domain modellerine ve use case'lere aittir).
Karar Kılavuzu & Önceliklendirme
Bakımı kolay, test edilebilir ve çakışmasız mimariler kurmak için monolitik dev servisleri tek amaçlı Use Case Interactor sınıflarına bölün.
Doğrulanmış Kaynaklar & Referanslar
- [BOOK]Clean Architecture: A Craftsman's Guide to Software Structure and Design (Use Cases & Interactors)— Robert C. Martin (Uncle Bob / Prentice Hall)
