Middleware nedir ?

Middleware nedir ?

Middleware nedir ?

Asp.net core uygulamamızda her web uygulamasında olduğu gibi istekler yani request'leri ve cevaplar yani response'ları vardır.

Bu request ve response'u, asp.net core uygulamamızda taşıyan nesne: httpcontext nesnesidir.

Asp.net core uygulamamızda httpcontext nesnesinin üzerinde işlemler yapmamız sağlayan yapılara middleware denir. "Middleware"e "ara yazılım" da diyebiliriz.

Middleware'ler bir hat üzerinden dururlar. Bu "hat"a ise yazılımcılar "Pipeline" der.

Pipeline'ın zaten ingilizce'de boru hattı gibi bir anlamı var.

Yani middleware'leri bir pipeline'a yerleştiriyoruz(yani bir boru hattına yerleştiriyoruz gibi düşünebilir).

Bu pipeline'ı (ya da boru hattını) aşağıdaki gibi düşünebiliriz.

-----Middleware(1)-------------Middleware(2)----------Middleware(n)----

Bu middleware'ler

  1. httpcontext nesnesi üzerinde istediği işlemi yapabilir ve bir sonraki middleware httpcontext nesnesi aktarabilir.
  2. httpcontext nesnesi üzerinde istediği işlemi yapabilir ve bir sonraki middleware httpcontext nesnesini aktarmadan kısa-devre(sort-circuit) yaptırabilir.

Middleware pipele'nının çalışma mantığı : Bir pipeline çok rahatlıkla boru hattına benzetebiliriz. Bir boru hattından aşağıdaki gibi su geçebilir(yani pipeline'dan httpcontext geçer) ve bu hat üzerinde aşağıdaki gibi dönen aleti middleware(ara yazılıma) benzetebiliriz.

gidiyor.gif

Yani httpcontext(yani su) üzerinde middleware(dönen alet) işlem yapabilir ve bir sonraki middleware için httpcontext'i(yani suyu) gönderebilir.

Ve bütün middleware'lerden en son ki middleware işlem yaptıysa, artık bütün middleware'lerin görevi: artık httpcontext'i(yani suyu) geriye gönderir aşağıdaki resimdeki gibi. Ve httpcontext(su) nesnesi üzerinde son middleware dan sonra geriye doğru giderek, üzerinden geçmiş olduğu middleware'ler tarafından işleme tabi tutulabilir.

geiyo.gif

Yani httpcontext(su) bir pipeline(boru hattın)'da ilerleyip en son middleware'de short-circuit(kısa-devre) yapıp geriye doğru akmaya başlar. Tıpkı microsoft'un kendi sitesindeki aşağıdaki resim gibi: