app.Run() vs app.Use() in dotnet core

Mohammad Zubair 0
app.Run() vs app.Use()

app.Run() আর app.Use() — এই দুইটা অনেকের মাথায় গুলিয়ে যায়, কিন্তু যদি একবার ধরতে পারো, তাহলে future এ middleware নিয়ে কাজ করাটা অনেক সহজ হবে।

চলো, এখন আমরা একদম সহজ বাংলা ভাষায় এবং উদাহরণসহ app.Run() vs app.Use() বুঝে নিই।

🛠️ Middleware কী সেটা এক লাইনেই:

Middleware মানে হচ্ছে এমন কিছু কোড যেটা HTTP Request/Response আসা-যাওয়ার পথে কাজ করে।

🔁 app.Use() — অনেকগুলা middleware একটার পর একটা চালাতে দেয়

app.Use(async (context, next) =>
{
    Console.WriteLine("Middleware 1 Start");

    await next(); // পরের middleware কে যেতে দেয়

    Console.WriteLine("Middleware 1 End");
});

🧠 ব্যাখ্যা:

  • app.Use() middleware চেইনে কাজ করে।

  • await next() কল করলে সে পরবর্তী middleware এর কাছে control পাঠায়

  • পরের middleware কাজ শেষে আবার আগেরটাতে ফিরে আসে।

➡️ অর্থাৎ:
app.Use() → “আগে আমি কিছু কাজ করব, তারপর পরের middleware কে ডাকব, শেষে আবার কিছু করব”।

🚫 app.Run() — চেইনের শেষ middleware

app.Run(async context =>
{
    await context.Response.WriteAsync("Hello from app.Run!");
});

🧠 ব্যাখ্যা:

  • এটা middleware চেইনের শেষ middleware.

  • next() এর কোনো call নেই।

  • একবার এটাতে request ঢুকলে, আর পরের কোনো middleware এ যায় না।

➡️ অর্থাৎ:
app.Run() → “আমি শেষ middleware, আমিই শেষ কথা!” 😄

🧪 চল একদম সহজ উদাহরণ দেখি:

app.Use(async (context, next) =>
{
    Console.WriteLine("🔹 Use 1 - Start");
    await next();
    Console.WriteLine("🔹 Use 1 - End");
});

app.Use(async (context, next) =>
{
    Console.WriteLine("🔹 Use 2 - Start");
    await next();
    Console.WriteLine("🔹 Use 2 - End");
});

app.Run(async context =>
{
    Console.WriteLine("🚀 Run - Executing");
    await context.Response.WriteAsync("Final response");
});

👉 Output হবে:

🔹 Use 1 - Start
🔹 Use 2 - Start
🚀 Run - Executing
🔹 Use 2 - End
🔹 Use 1 - End

📋 Summary Table:

Feature app.Use() app.Run()
Middleware Chain হ্যাঁ (চেইনের অংশ) না (চেইনের শেষ)
next() কল করে? হ্যাঁ না
কয়টা Use করা যায়? একাধিক সাধারণত একটা (শেষে)
Control Pass করে? হ্যাঁ (পরের middleware এ পাঠায়) না (নিজেই শেষ করে দেয়)

🔚 সহজভাবে মনে রাখো:

Use() → “আমি কাজ করব, আর পরের middleware কে যেতে দিব।”
Run() → “আমি কাজ করব, এরপর আর কেউ কাজ করবে না!”


Mohammad Zubair

I'm Mohammad Zubair, a passionate software engineer working in the dynamic world of IT. Currently, I'm proud to be a part of HawarIT, a thriving Dutch-Bangladeshi joint venture company, where I contribute my expertise and enthusiasm to the field of software engineering.

Leave a Reply

Your email address will not be published. Required fields are marked *