.Net Core Microsoft tarafından open-source olarak geliştirilmiş modüler bir .net framework’dür.

Asp.Net Core ise klasik bildiğimiz Asp.Net kütüphanesinin open-source olarak microsoft tarafından release edilmiş halidir.

Asp.net core’da bir çok feature yada özellik ayrı bir modül olarak kolayca entegre edilebilecek şekilde geliştirilmiştir. Middleware’de bunlardan birisidir.

Middleware nedir diye soracak olursanız; Middleware asp.net core içerisinde request-response pipeline’ını handle etmemizi sağlayan bir çeşit interceptor görevi gören sınıflardır diyebilirim. Bu sınıfları kullanarak controller sınıfımıza gelen request’leri veya response’ları modify edebilir, header check yapabiliriz.

Middleware asp.net core cycle’ın da ki konumunu anlamak için aşağıdaki resime baksak yeterlidir.

Uygulamamız içerisinde tanımlı olan middleware’ler register edilme sırasıyla birlikte yukarıdaki resimde olduğu gibi birbirlerini call ederek pipeline’ı tamamlarlar.

Middleware İmplementation

Örneğimiz şu şekilde olsun; bir api projemiz var ve bu projede middleware kullanarak client’dan request header da beklediğimiz Client-Key parametresini gönderip göndermediğini kontrol edelim. Göndermediği durumda Http 400 ile geriye hata dönelim.

Middleware tanımlamanın birkaç farklı yolu var ancak ben en basit olanını göstereceğim. İlk olarak VS.’da hazırda bir .net core web api projemiz oldugunu varsayıyoruz ve bu projemize bir Middleware classı ekleyecegiz. Ozaman HeaderCheckMiddleware adında bir sınıf ekleyerek başlayalım.

Yukarıda görüldüğü üzere, Invoke metodu middleware call edildiğinde execute edilecek olan metottur. Bu metot; end-poit’e gelen request’i ve end-point’in return ettiği response’a müdahale edebilmemizi sağlıyor.

Bende yapılan her httpRequest’inde header de beklediğim Client-Key bilgisini kontrol etme işini yukarıda olduğu gibi bu metodun içerisinde yaptım. Eğer bu header key header’da yok ise Htpp400 olarak geriye hata mesajı return ettim.

Middleware’imizi tanımladıktan sonra geriye bunu asp.net core projemize register etmek kalıyor. Bunun içinde aşağıdaki gibi bir extension metot yazalım(best practive için) ve register etme işlemini asp.net core ile birlikte gelen Startup.cs de bulunan Configure metodu içerisinde tıpkı projede ayağa kaldırabileceğimiz bir servismiş gibi enable edelim.

Son adım olarakta Configure metodu içerisinde middleware’i aktifleştirelim .

Aşağıdaki gibi postman kullanarak projenizde bulunan herhangi bir end-point’e call yaptığınızda header da beklenen parametreleri göndermezsek hata almış olacağız.

Parametreyi doğru bir şekilde gönderdiğimiz durumda ise sorunsuz şekilde endpoint’e ulaşıp success response alabiliriz.

Middleware asp.net core projelerinde aop(aspect oriented programming) özelliklerini uygulayabilmemizi sağlar ve bununla birlikte bizlere projemiz için modüler özellikleri olan küçük feature’lar ekleterek kod tekrarından ve spaghetti code bloklarından bizleri kurtarabilir. Örnekte sadece küçük bir header check işlemi yaptık ancak middleware kullanarak bunu gibi daha bir çok geliştirmede yapabiliriz.

Geldik bir makalenin daha sonuna. Yeni bir makalede görüşmek üzere hoşçakalın.

--

--