ASP.NET Core הציג קונספט חדש בשם Middleware. Middleware אינו אלא component (מחלקה) שמבוצע בכל בקשה ביישום ASP.NET Core.
ב- ASP.NET הקלאסי HttpHandlers ו- HttpModules היו חלק מצינור הבקשה, והיה צורך ששניהם יהיו מוגדרים ומבוצעים בכל בקשה.
בדרך כלל, יהיו Middleware מרובים ב- ASP.NET Core web application.
Middleware יכול להיות מסופק מה framework, מחבילת NuGet או custom middleware.
אנו יכולים לקבוע את סדר ביצוע middleware ב request pipeline. כל middleware מוסיף או משנה את בקשת http ומעביר אפשרות שליטה ל middleware הבא.
הדיאגרמה הבאה ממחישה את הסדר הטיפוסי של שכבות middleware.
הסדר חשוב מאוד, ולכן הכרחי להבין את המיקום של כל middleware בצינור הבקשה:
כל middleware יכול לבצע פעולות לפני ואחרי ה- middleware הבא.Exception-handling delegates אמורים להיקרא מוקדם בpipeline, כך שיוכלו לתפוס exceptions המתרחשים בשלבים מאוחרים יותר של ה request pipeline.
איך זה עובד:
כאשר נכנסת בקשת HTTP, ה delegate הראשון לבקשה מטפל בבקשה זו. לאחר מכן הוא יכול להעביר את הבקשה לבא בתור, או להפסיק את התפשטות הבקשה.
זה מאוד שימושי בהרבה תרחישים, למשל טיפול ב exceptions לפני כל דבר אחר וכו'.
התגובה המוחזרת נעה בכיוון ההפוך חזרה דרך ה request pipeline. זה מאפשר לכל רכיב להריץ קוד בשתי הפעמים: כשהבקשה מגיעה וגם כשהתגובה כבר בדרך החוצה.