কম্পিউটার টিউটোরিয়াল

C# ASP.NET Core-এ IApplicationBuilder.Use() এবং IApplicationBuilder.Run() এর পার্থক্য

Startup ক্লাসের Configure মেথডে IApplicationBuilder ইনস্ট্যান্স ব্যবহার করে মিডলওয়্যার কনফিগার করা যায়।

Run() হল IApplicationBuilder ইনস্ট্যান্সের একটি এক্সটেনশন মেথড যা অ্যাপ্লিকেশনের রিকোয়েস্ট পাইপলাইনে একটি টার্মিনাল মিডলওয়্যার যোগ করে।

Run মেথড IApplicationBuilder-এ একটি এক্সটেনশন মেথড এবং RequestDelegate টাইপের একটি প্যারামিটার গ্রহণ করে।

Run মেথডের সিগনেচার

public static void Run(this IApplicationBuilder app, RequestDelegate handler)

RequestDelegate-এর সিগনেচার

public delegate Task RequestDelegate(HttpContext context);

উদাহরণ

public class Startup
{ 
    public Startup() 
    { 
    } 
    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    { 
        // IApplicationBuilder ব্যবহার করে মিডলওয়্যার কনফিগার করুন..
        app.Run(async (context) =>
        { 
            await context.Response.WriteAsync("Hello World!"); 
        }); 
        // স্পষ্টতার জন্য অন্যান্য কোড সরানো হয়েছে.. 
    } 
}

উপরোক্ত MyMiddleware ফাংশন অ্যাসিঙ্ক্রোনাস নয় তাই এটি এক্সিকিউশন সম্পূর্ণ না হওয়া পর্যন্ত থ্রেড ব্লক করবে। পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করতে async এবং await ব্যবহার করে এটি অ্যাসিঙ্ক্রোনাস করুন।

public class Startup
{ 
    public Startup() 
    { 
    } 
    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    { 
        app.Run(MyMiddleware); 
    } 
    
    private async Task MyMiddleware(HttpContext context)
    { 
        await context.Response.WriteAsync("Hello World! "); 
    } 
}

Run() ব্যবহার করে একাধিক মিডলওয়্যার কনফিগার করা

নিচের কোড সর্বদা প্রথম Run মেথডটি এক্সিকিউট করবে এবং দ্বিতীয় Run মেথডটিতে কখনো পৌঁছাবে না:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{ 
    app.Run(async (context) =>
    { 
        await context.Response.WriteAsync("1st Middleware"); 
    }); 
    // নিচেরটি কখনো এক্সিকিউট হবে না
    app.Run(async (context) =>
    { 
        await context.Response.WriteAsync(" 2nd Middleware"); 
    }); 
}

USE

একাধিক মিডলওয়্যার কনফিগার করতে Use() এক্সটেনশন মেথড ব্যবহার করুন। এটি Run() মেথডের মতো কিন্তু next প্যারামিটার অন্তর্ভুক্ত করে যা সিকোয়েন্সে পরবর্তী মিডলওয়্যার আহ্বান করতে ব্যবহৃত হয়।

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{ 
    app.Use(async (context, next) =>
    { 
        await context.Response.WriteAsync("1st Middleware!"); 
        await next(); 
    }); 
    app.Run(async (context) =>
    { 
        await context.Response.WriteAsync("2nd Middleware"); 
    }); 
}
  1. C# ASP.NET WebAPI-তে FromBody এবং FromUri অ্যাট্রিবিউটের পার্থক্য কী?

  2. C#-এ ইন্টারফেস (Interface) এবং ক্লাস (Class) এর পার্থক্য

  3. C#-এ লিটারেল (Literal) এবং কনস্ট্যান্ট (Constant) এর পার্থক্য

  4. C#-এ String (ক্লাস) এবং string (এলিয়াস) এর পার্থক্য