ASP.NET Core’da Filter ve Middleware: Gerçek Farklar ve En Doğru Kullanım Alanları
Backend geliştirme dünyasında en sık karıştırılan iki yapı: Middleware ve Filter. Her ikisi de HTTP istek–cevap döngüsüne müdahale eder, ancak farklı seviyelerde ve farklı amaçlarla çalışır.
Bu yazıda, bu iki mekanizmayı detaylı şekilde ele alacağız:
- Middleware ve Filter nedir?
- Aralarındaki temel farklar nelerdir?
- Hangi senaryoda hangisini kullanmalısın?
- Gerçek kod örnekleriyle nasıl uygulanır?
Hazırsan, request pipeline’ın derinliklerine inelim 🚀
🧩 Middleware Nedir?
ASP.NET Core’da Middleware, request pipeline’ın bir parçasıdır. Her gelen isteğin geçtiği bir zincir gibi düşünebiliriz. Her middleware, isteği işleyebilir, yönlendirebilir veya bir sonraki middleware’e iletebilir.
Genellikle uygulama genelinde geçerli davranışlar oluşturmak için kullanılır.
Örneğin:
- Logging
- Exception Handling
- Authentication
- CORS
- Response Compression
Bu örnekte, her HTTP isteği geldiğinde konsola log yazılıyor. Middleware, Controller’a ulaşmadan önce çalıştığı için tüm istekleri kapsar.
📌 Ne Zaman Middleware Kullanılır?
- Uygulama genelinde geçerli bir davranış istiyorsan.
- Request pipeline’ın en erken veya en geç aşamasında işlem yapmak istiyorsan.
- Controller seviyesinden bağımsız global davranış gerekiyorsa (örnek: global exception handling, JWT doğrulama vb.).
⚙️ Filter Nedir?
Filter, ASP.NET MVC veya Web API pipeline’ında, Controller ve Action seviyesinde çalışan yapılardır. Middleware’den farklı olarak, daha “hedefli” ve MVC yaşam döngüsüne entegre çalışırlar.
Filter’lar; request, action veya result aşamalarında devreye girebilir.
🎯 Filter Türleri
ASP.NET Core’da 4 temel filter türü bulunur:
Bu örnekte, yalnızca ProductController üzerindeki action’lar loglanıyor. Yani, davranış Controller bazlı ve isteğe göre hedeflenmiş.
📌 Ne Zaman Filter Kullanılır?
- Sadece belirli Controller veya Action seviyesinde işlem yapmak istiyorsan.
- Request pipeline’ında değil, MVC action aşamasında davranış eklemek istiyorsan.
- Validation, Authorization, Logging veya Exception handling gibi işe özel kontrollerde kullanmak istiyorsan.
⚔️ Middleware vs Filter — Gerçek Farklar
🚦 Hangisini Ne Zaman Kullanmalısın?
Middleware seç:
- Tüm istekleri ilgilendiren, global bir davranış gerekiyorsa.
- Controller veya View’dan bağımsız çalışacak bir yapıysa. Örneğin:
- Exception Handling
- Logging
- JWT doğrulama
- Routing veya CORS
Filter seç:
- Sadece belirli Controller/Action üzerinde işlem yapacaksan.
- MVC pipeline’ında çalışması gerekiyorsa. Örneğin:
- Model Validation
- Yetkilendirme kontrolü
- Response manipülasyonu
🧠 Özetle
Middleware, global düzeyde pipeline’ın bir parçasıdır. Filter, Controller ve Action seviyesinde davranışlar ekler.
Doğru yerde doğru yapıyı kullanmak, hem kodun okunabilirliğini hem de performansı artırır. ASP.NET Core’un bu iki güçlü özelliğini birlikte ve bilinçli kullandığında, uygulamanın mimarisi çok daha temiz hale gelir.
Son Söz
Eğer ASP.NET Core üzerinde çalışıyorsan, Middleware ve Filter farkını anlamak, request yaşam döngüsünü anlamanın anahtarıdır. Küçük projelerde fark etmeyebilir ama büyük kurumsal yapılarda bu fark mimari bütünlüğü belirler.
“Doğru yerde doğru yapı, güçlü bir backend’in temelidir.”
Yorumlar