Middleware dil bağımsız bir konsepttir. Olayı ise şöyle özetleyelim, bir web isteğinin işlenmesi sürecinde önce HTTP Request alınır. Bu alınan HTTP Request önce sunucu tarafından, sonra sunucuda çalışan yazılıma göre yorumlanarak bir HTTP Response gönderilir. Middleware, isteğin yazılım tarafından işlenmesi seansında uygulanmakta.
Örnek veriyorum bir dil için default pipeline soyle olsun:
Request -> Router -> Controller -> Action
(Bu pipeline ornegi pek de dogru sayilmaz cunku Router da aslinda bir middleware'dir.)
Yani isteginiz alındı, URL ve bilumum parametrelerle doğru controller'daki doğru işlemi çalıştırdı. Mantıklı görünüyor fakat işlerin karışması olası. Atıyorum ki sonradan özel bir hata işleci eklemek istediniz, yani yazılım her hata oluşturduğunda size e-posta göndermesini istiyorsunuz. Bunu oturup bütün Controller'lardaki Action'lara eklemeniz karmaşıklığa ve kendini tekrar etmeye sebep olur. Bu örneğe ek olarak loglama, doğrulama, özel yönlendirme servis örnekleri de verilebilir. Bu noktada yardıma Middleware'lar yetişiyor.
Middleware'ları kullandığınızda sarmal bir yapı oluşmakta. İç içe girmiş halkalar gibi düşünün. Dıştan içe doğru middleware'lar çalışıyor ve en son asıl action çalışıyor. Middleware'lar asenkron da çalışabiliyor., yani eşzamanlı olarak siz loglama yaparken arkada uygulama action'a ilerleyebiliyor.
Ek olarak bunu da okumanızı şiddetle tavsiye ediyorum.