اخبار، مطالب و رویدادهای مرتبط با توسعه نرم افزار رادکام

ASP.NET Core Middleware

 

ASP.NET Core Middleware

در ASP.NET Core مفاهیم HttpModules و HttpHandlers و جود ندارد و بجای آنها از ASP.NET Core Middleware استفاده می شود. قبل از اینکه ASP.NET Core Middleware شرح دهیم، اجازه دهید نحوه کار HttpModules و HttpHandlers را بررسی کنیم.

در ASP.NET MVC و ASP.NET Webform، ‏HttpHandlers و HttpModules، ‏Pipeline درخواست را تشکیل می دهند.

HttpModules&Handlers

Handlers:

1.  کلاس های پیاده سازی شده از IHttpHandler هستند.

2.  فایل های با نوع .report را مدیریت می کنند.

3.  در Web.config پیکربندی می شوند.

Modules:

1.  برای هر درخواست فراخوانی می شوند.

2. باعث قطع ادامه پردازش های یک درخواست می شوند.

3. قادر به تغییر پاسخ HTTP هستند.

4. در Web.config پیکربندی می شوند.

ترتیب پردازش ماژول ها در درخواست ها:

1. بر اساس چرخه زندگی برنامه (Application Life cycle) است، که یکسری از رویدادهای صادر شده از APS.NET می باشد (رویدادها مثل BeginRequest، AuthenticateRequest و غیره). هر ماژول می تواند برای یک یا چند رویداد یک handler ایجاد کند.

2. برای رویدادهای یکسان در Web.config پیکربندی انجام می گیرد.

همچنین در Global.asax.cs می توان handlerهایی را برای چرخه زندگی نرم افزار به ماژول ها اضافه کرد. این handlerها بعد از handlerهای پیکربندی شده اجرا می شوند.

Middleware:

Middleware مفهومی ساده تر از Modules و Handlers است:

1. نقش هر دوی HttpModules و HttpHandlers توسط Middleware صورت می گیرد.

2. Middleware با استفاده از کد پیکربندی می شود بجای پیکربندی در Web.config

یک Middleware چیزی نیست جز یک کامپوننت (Class) که در هر درخواست از برنامه ASP.NET Core اجرا می شود.

معمولا در برنامه های ASP.NET Core چندین Middleware وجود دارد. می توانیم ترتیب اجرای Middleware ها را در هر Pipeline مشخص کنیم. همچنین هر Middleware می تواند درخواست HTTP را تغییر دهد و یا آن را به Middleware بعدی پاس دهد. شکل زیر نمایش دهنده یک Pipeline است.

ASP.NET Core Middleware می توان Middlewareها را در متد Configure کلاس Startup با استفاده از نمونه IApplicationBuilder پیکربندی کرد. برای مثال 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public class Startup
{
    public Startup()
    {
    } 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        //configure middleware using IApplicationBuilder here..
            
        app.Run(async (context) =>
        {              
            await context.Response.WriteAsync("Hello World!");
              
        });     
    }
}

تفاوت ASP.NET Core Middleware و HttpModules:

1. ترتیب پردازش در ASP.NET Core Middleware و HttpModules متفاوت است:

  • - ترتیب پردازش در ASP.NET Core Middleware بر اساس ترتیب قرارگیری Middleware ها در Pipline درخواست است، اما در HttpModules به چرخه حیات رویدادهای برنامه بستگی دارد.
  • - ترتیب پاسخ Middlewareها در ASP.NET Core Middleware برعکس درخواست آنهاست، اما در HttpModules ترتیب درخواست و پاسخ یکسان است.

2. ASP.NET Core Middleware از هاست مستقل است اما HttpModules به System.web وابسته است.

3. Middlewareها از هر رویدادی مستقل هستند اما HttpModules وابسته به رویدادهای برنامه است.

4. ASP.NET Core Middleware از طریق کد پیکربندی می شود اما HttpModules از طریق web.config و global.ascx

 منابع

Migrate HTTP handlers and modules to ASP.NET Core middleware

 ASP.NET Core - Middleware

How ASP.NET Core 1.0 Middleware is different from HttpModule


نام را وارد کنید
تعداد کاراکتر باقیمانده: 1000
نظر خود را وارد کنید