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

C# ASP.NET Core মিডলওয়্যার HttpModule-থেকে কীভাবে ভিন্ন

HttpModules (ASP.NET Classic):

  • web.config বা global.asax দিয়ে কনফিগার করা হয়।
  • ডেভেলপারের এক্সিকিউশন অর্ডার ওপর কন্ট্রোল নেই।
  • অর্ডার মূলত অ্যাপ্লিকেশন লাইফসাইকেল ইভেন্টের ওপর ভিত্তি করে। রিকোয়েস্ট এবং রেসপন্সের এক্সিকিউশন অর্ডার একই থাকে।
  • অ্যাপ্লিকেশন ইভেন্ট-স্পেসিফিক কোড আটাচ করতে সাহায্য করে।
  • System.Web-এ বাঁধা (tied)।

Middleware (ASP.NET Core):

  • Startup.cs-এ কোড দিয়ে কনফিগার করা হয় (web.config না, এন্ট্রি পয়েন্ট)।
  • পূর্ণ কন্ট্রোল: কী এক্সিকিউট হবে এবং কোন অর্ডারে—যে অর্ডারে অ্যাড করা হয়ে থাকে সেটাই এক্সিকিউশন অর্ডার।
  • রেসপন্সের জন্য মিডলওয়্যার অর্ডার রিকোয়েস্টের বিপরীত (রিভার্স) होता है।
  • লাইফসাইকেল ইভেন্ট থেকে স্বাধীন।
  • হোস্ট-ইনডিপেন্ডেন্ট (Kestrel, IIS, Docker, ইত্যাদি)।

বিল্ট-ইন মিডলওয়্যার (ASP.NET Core)

  • Authentication: অথেন্টিকেশন সাপোর্ট।
  • CORS: Cross-Origin Resource Sharing কনফিগারেশন।
  • Routing: রিকোয়েস্ট রুট ডিফাইন ও কনস্ট্রেইন।
  • Session: ইউজার সেশন ম্যানেজমেন্ট সাপোর্ট।
  • Diagnostics: এরর পেজ এবং রানটাইম ইনফরমেশন সাপোর্ট।

কাস্টম মিডলওয়্যার উদাহরণ

public class MyMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger _logger;
    public MyMiddleware(RequestDelegate next, ILoggerFactory logFactory)
    {
        _next = next;
        _logger = logFactory.CreateLogger("MyMiddleware");
    }
    public async Task Invoke(HttpContext httpContext)
    {
        _logger.LogInformation("MyMiddleware executing..");
        await _next(httpContext); // পরবর্তী মিডলওয়্যার কল
    }
}
// এক্সটেনশন মেথড
public static class MyMiddlewareExtensions
{
    public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<MyMiddleware>();
    }
}
// পাইপলাইনে যোগ
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseMiddleware<MyMiddleware>();
    app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); });
}

মূল পার্থক্য সারসংক্ষেপ: মিডলওয়্যার মডুলার, কম্পোজেবল, অর্ডার-কন্ট্রোলযোগ্য, হোস্ট-অগ্নস্টিক এবং ASP.NET Core পাইপলাইনের 핵심 অংশ। HttpModule লিগ্যাসি, কনফিগ-বেইসড, লাইফসাইকেল-বাউন্ড এবং System.Web-ডিপেন্ডেন্ট।

  1. C# ASP.NET WebAPI-তে Accept Header দিয়ে ভার্সনিং কীভাবে করবেন?

  2. C# ASP.NET WebAPI-তে CORS সমস্যা সমাধান কীভাবে করবেন?

  3. C# ASP.NET WebAPI-তে একশন মেথড থেকে কাস্টম রেজাল্ট টাইপ রিটার্ন কীভাবে করবেন?

  4. Windows Core OS বনাম Windows 10: মূল পার্থক্য ব্যাখ্যা