Büyük resim
Bir isteğin uçtan uca haritası
Tarayıcıdan veritabanına ve geri: duraklar, sorumluluklar ve nerede yavaşlayabileceği.
Kavramı anlayalım
Bir blog yazısını açtığında istek beş bölgeden geçer. İstemcide tarayıcı isteği hazırlar, ağ katmanı DNS, TCP ve TLS ile güvenli bağlantıyı kurar. Kenarda bir ters vekil TLS’i sonlandırır ve isteği iç ağa aktarır. Web sunucusunda Next.js sayfayı üretmek için veriye ihtiyaç duyar ve API’yi çağırır. API’de ASP.NET Core isteği bir middleware hattından geçirir: hata yakalama, routing, hız sınırı, kimlik doğrulama, yetkilendirme, model binding ve en sonunda controller. Veri bölgesinde önce önbelleğe bakılır, yoksa EF Core sorguyu SQL’e çevirir ve SQL Server çalıştırır.
Yanıt aynı yoldan geri döner ve her durak bir şey ekler: EF Core satırları nesneye çevirir, controller JSON üretir, Next.js HTML üretir, vekil sıkıştırır, tarayıcı çizer ve sayfayı etkileşimli hale getirir.
Bu haritayı ezberlemek değil, bir sorunla karşılaştığında ‘hangi durakta?’ diye sorabilmek önemlidir. Aşağıdaki simülatörde farklı senaryoları dene: önbellekten dönen istek, yetkisiz istek veya veritabanı hatası. Bazı duraklar hiç çalışmaz; isteğin nerede kısa devre yaptığını görmek, katmanların neden var olduğunu anlatır.
Performans ve hata ayıklama, isteğin zamanını hangi durakta harcadığını bilmekle başlar.
Yavaş bir sayfanın sebebini hep veritabanında aramak; çoğu zaman ağ, büyük JavaScript veya tekrarlanan çağrılardır.
Bir mektubun şehirdeki yolculuğu
İsteği bir mektup, sunucuyu bir şehir gibi düşün. Senaryo seç, oynat ve mektubun hangi kapıdan geçip nerede durdurulduğunu izle.
Bir yazıya tıkladın. Tarayıcı ‘Bana bu yazıyı gönder’ diyen bir mektup yazıyor.
Aynı konu. Üç farklı derinlik.
Tarayıcı → Ağ → Ters vekil → Next.js → API → (Redis | EF Core → SQL Server)
← ← ← ← ← ← ← ← ←Gidiş ve dönüş aynı duraklardan geçer.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Simülatörde ‘Yetkisiz istek’ senaryosunu çalıştır. Hangi duraklar hiç çalışmıyor ve bu neden iyi bir şey?
Çözümü ve açıklamasını göster
Çalışmayanlar: model binding, controller, servis, Redis, EF Core, SQL Server.
İstek yetkilendirme middleware’inde 401 ile kısa devre yapar.Reddedilecek bir istek ne kadar erken durdurulursa o kadar az kaynak harcanır ve saldırı yüzeyi o kadar küçük olur.