ASP.NET Core’da Middleware Yapısını Anlama ve Özelleştirme

Hakan Güzel
2 min readAug 23, 2024

--

ASP.NET Core, modern web uygulamalarını geliştirme sürecinde, esnek ve güçlü yapılandırma seçenekleri sunar. Bunlar arasında, uygulama pipeline’ını kontrol eden ve yönlendiren middleware’ler özel bir öneme sahiptir. Bu yazıda, ASP.NET Core’daki middleware yapılarının nasıl çalıştığını, nasıl özelleştirilebileceğini ve bu bileşenlerin uygulama pipeline’ında nasıl kullanılabileceğini derinlemesine inceleyeceğiz. Ayrıca, güvenlik ve performans iyileştirmeleri için middleware’lerin nasıl etkin şekilde kullanılabileceğine de değineceğiz.

1. Middleware Nedir?

Middleware, ASP.NET Core’da bir HTTP request’in işlenme sürecinde çalışan ve request ile response arasındaki etkileşimi yöneten bir yazılım katmanıdır. Middleware’ler, gelen istekleri karşılayabilir, işleyebilir ve sonraki middleware’e iletebilir ya da cevap dönebilir.

2. Middleware’lerin Pipeline’daki Rolü

ASP.NET Core uygulamalarında middleware’ler, bir request’in işlenme sırasını ve şeklini belirler. Uygulamanızın Startup sınıfında Configure metodunda tanımlanan middleware'ler, tanımlandıkları sıraya göre çalışır. Bu, her bir middleware'in sonraki middleware üzerinde tam kontrol sahibi olabileceği anlamına gelir.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}

3. Özelleştirilmiş Middleware Yazma

ASP.NET Core, özelleştirilmiş middleware’ler yazmanıza olanak tanır, böylece spesifik işlevleri gerçekleştiren veya güvenlik ve performans gibi özel ihtiyaçları karşılayan bileşenler oluşturabilirsiniz. Bir middleware genellikle bir constructor ve Invoke veya InvokeAsync metodundan oluşur.

public class CustomMiddleware
{
private readonly RequestDelegate _next;

public CustomMiddleware(RequestDelegate next)
{
_next = next;
}

public async Task InvokeAsync(HttpContext context)
{
// Önce bir işlem yap
await context.Response.WriteAsync("Önce bu çalıştı!\n");

// Sonraki middleware'e geç
await _next(context);

// Sonra bir işlem yap
await context.Response.WriteAsync("Sonra bu çalıştı!\n");
}
}

Middleware’inizi Startup sınıfında şu şekilde kaydedebilirsiniz:

public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<CustomMiddleware>();
}

4. Güvenlik ve Performans İçin Middleware Kullanımı

Middleware’ler, güvenlik önlemleri eklemek için de kullanılabilir. Örneğin, CORS politikaları, Authentication ve Authorization işlemleri middleware aracılığıyla yönetilebilir. Ayrıca, performansı artırmak için önbelleğe alma (caching) ve kompresyon gibi teknikler middleware olarak implemente edilebilir.

5. Sonuç

Middleware’ler, ASP.NET Core uygulamalarının temel taşlarından biridir ve uygulamanızın nasıl davranacağını büyük ölçüde şekillendirir. Güvenli ve hızlı web uygulamaları geliştirmek için, bu bileşenlerin doğru kullanımı hayati öneme sahiptir. Kendi middleware’lerinizi yazarak veya mevcutları özelleştirerek, uygulamanızın ihtiyaçlarına en uygun hale getirebilirsiniz.

--

--