زمانیکه کاربر از طریق مرورگر خود درخواستی را به سمت سرور می فرستد، این درخواست از طریق پروتکل Http به سمت سرور مورد نظر رفته و اطلاعات از طریق همین پروتکل Http به کاربر برگردانده می شود.
هر درخواست Http دارای یک header می باشد که اطلاعاتی را درون خود نگه میدارد.
پس زمانیکه یک درخواست http به سایت ما می رسد، از لحظه ای که این درخواست وارد سرور ما می شود تا موقعی که این درخواست پردازش می شود و به مرورگر کاربر بازگردانده می شود بایستی یک مسیر خاص را طی نماید که به این مسیر خط لوله یا PipeLine می گویند.
در زمانیکه این درخواست از خط لوله می گذرد یکسری عملیات روی آن انجام می شود. همچنین یکسری اطلاعات از این درخواست استخراج شده و یا اطلاعاتی به آن افزوده می شود. این عملیات در طول گذر درخواست از خط لوله توسط middleware ها یا میان افزارها انجام می شود.
در یک پروژه از نوع Asp.net Core 3.1 کلاسی به نام Startup.cs وجود دارد. در این کلاس متدی به نام Configure وجود دارد. در این متد ما می توانیم میان افزارهای خود را تعریف کنیم.
مثال بالا که متد Configure را نمایش می دهد دارای میان افزارهای مختلفی می باشد. یکی از این میان افزارها app.UseStaticFiles می باشد که در مثال بالا مشخص شده است. این میان افزار به درخواست های رسیده و به سرور اجازه دسترسی به فایلهای static پروژه مانند تصاویر و فایلهای css و js را می دهد. در نسخه های قبلی Asp که میان افزارها وجود نداشت تمامی این درخواست ها توسط IIS مدیریت می شد.
مشکلی که وجود داشت این بود که اگر مشکلی برای IIS به وجود می امد یا هنگ می کرد دیگر قادر به مدیریت هیچ وظیفه ای نبود. اما توسط میان افزارها حتی اگر IIS به مشکل برخورد کند باز هم بسیاری از وظایف مانند همین نمایش فایلهای ثابت پروژه به خوبی انجام می شود.
در .Net 6 به بعد دیگر خبری از کلاس Startup.cs نیست و این کلاس با Program.cs ترکیب شده است.
varbuilder = WebApplication.CreateBuilder(args);
varapp = builder.Build();
app.UseStaticFiles();
به صورت بالا نوشته می شود.
نکته مهم: ترتیب نوشتن این Middleware ها مهم می باشد. به طور مثال برای اهراز هویت یا همان Identity ما دو Middleware را باید اضافه کنیم که ترتیب این دو مهم می باشد که کدام را اول بنویسیم.
app.UseAuthentication();
app.UseAuthorization();
چند نمونه از Middleware های پرکاربرد: