ASP.NET Core-এ Routing হলো একটি গুরুত্বপূর্ণ প্রক্রিয়া, যার মাধ্যমে HTTP রিকোয়েস্টের উপর ভিত্তি করে কন্ট্রোলার এবং অ্যাকশন নির্বাচন করা হয়। এটি ইউজার রিকোয়েস্টকে সঠিক কন্ট্রোলার ও অ্যাকশন মেথডের সাথে সংযুক্ত করতে সাহায্য করে। Routing আপনাকে একটি URL প্যাটার্নের ভিত্তিতে রিকোয়েস্ট ম্যানেজ করার সুযোগ দেয়, যা ওয়েব অ্যাপ্লিকেশনের নির্দিষ্ট কার্যকলাপের সাথে সম্পর্কিত।
ASP.NET Core-এ Routing এর মাধ্যমে ইউজাররা সহজে নির্দিষ্ট অ্যাকশন, কন্ট্রোলার বা পেজে প্রবেশ করতে পারে URL-এর মাধ্যমে। Routing এক ধরণের নেভিগেশন সিস্টেম, যা নির্ধারণ করে কোন কন্ট্রোলার বা মেথডে রিকোয়েস্ট যাবে।
ASP.NET Core Routing এর কার্যপ্রণালী
ASP.NET Core-এ Routing সাধারণত URL প্যাটার্নের সাথে মিল রেখে কন্ট্রোলার এবং অ্যাকশন সিলেক্ট করে। সাধারণত নিম্নলিখিত পদক্ষেপগুলোর মাধ্যমে কাজ করে:
- URL ম্যাচিং: ইউজারের দেয়া URL-এর সাথে যে কোন Routing প্যাটার্ন মেলে, সেটি নির্বাচিত হয়।
- Route Data: যেসকল প্যারামিটার URL থেকে নেওয়া হয়, তা route data হিসেবে পাস করা হয়।
- Controller এবং Action Selection: নির্বাচিত URL প্যাটার্ন অনুযায়ী Controller এবং Action সিলেক্ট করা হয় এবং রিকোয়েস্ট প্রক্রিয়া শুরু হয়।
- Action Execution: নির্ধারিত Action মেথড চলানো হয় এবং ইউজারের জন্য রেসপন্স প্রস্তুত করা হয়।
ASP.NET Core Routing এর ধরন
ASP.NET Core-এ Routing দুই ধরনের হয়ে থাকে:
1. Conventional Routing (স্বাভাবিক Routing)
এটি হল ডিফল্ট routing সিস্টেম যা URL প্যাটার্নের ওপর ভিত্তি করে controller এবং action নির্বাচন করে। সাধারণত Startup.cs ফাইলে এটি কনফিগার করা হয়।
উদাহরণ:
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
এই কনফিগারেশনে:
{controller=Home}: যদি কোনো controller নির্ধারণ না করা হয়, তাহলেHomeকন্ট্রোলার ব্যবহার হবে।{action=Index}: যদি কোনো action নির্ধারণ না করা হয়, তাহলেIndexaction চলবে।{id?}:idপ্যারামিটারটি ঐচ্ছিক।
URL এর উদাহরণ:
https://yourdomain/Home/Index→ Home কন্ট্রোলারের Index অ্যাকশনকে কল করবে।https://yourdomain/Home/About→ Home কন্ট্রোলারের About অ্যাকশনকে কল করবে।https://yourdomain/Products/Details/5→ Products কন্ট্রোলারের Details অ্যাকশন, এবং5ID প্যারামিটারটি পাঠাবে।
2. Attribute Routing (এট্রিবিউট Routing)
এট্রিবিউট Routing ব্যবহার করে প্রতিটি কন্ট্রোলার এবং অ্যাকশনের উপর সরাসরি URL প্যাটার্ন নির্ধারণ করা যায়। এটি একটি ফлексিবল এবং ডাইনামিক পদ্ধতি, যেখানে প্রতিটি কন্ট্রোলার ও অ্যাকশনের উপরে Route এট্রিবিউট দেয়া হয়।
উদাহরণ:
[Route("products")]
public class ProductsController : Controller
{
[Route("{id}")]
public IActionResult Details(int id)
{
// Product details logic
return View();
}
[Route("create")]
public IActionResult Create()
{
// Create product logic
return View();
}
}
এখানে:
/products/5→ ProductsController-এর Details অ্যাকশন, যেখানেid=5প্যারামিটার পাঠানো হবে।/products/create→ ProductsController-এর Create অ্যাকশন কল করবে।
3. Attribute Routing with Parameters
এট্রিবিউট Routing-এর সাথে প্যারামিটার ব্যবহার করা যেতে পারে যাতে URL প্যাটার্নে ডাইনামিক ভ্যালু পাঠানো যায়।
উদাহরণ:
[Route("order/{orderId}")]
public IActionResult OrderDetails(int orderId)
{
// Fetch order details using orderId
return View();
}
এই কনফিগারেশনে, URL যেমন /order/123 ব্যবহার করলে OrderDetails অ্যাকশন কল হবে এবং orderId প্যারামিটার হিসেবে 123 পাঠানো হবে।
ASP.NET Core Routing এর উন্নত বৈশিষ্ট্য
1. Route Constraints
ASP.NET Core Routing আপনাকে route প্যাটার্নে কনস্ট্রেইন্ট (যেমন: একটি প্যারামিটারটি সঠিক ধরনের হতে হবে) নির্ধারণ করার সুযোগ দেয়।
উদাহরণ:
[Route("products/{id:int}")]
public IActionResult GetProduct(int id)
{
// Only integer values for id will match
return View();
}
এখানে id:int কনস্ট্রেইন্ট নির্ধারণ করেছে যে id একটি পূর্ণসংখ্যা হতে হবে।
2. Default Values
Routing প্যাটার্নে আপনি ডিফল্ট ভ্যালু দিতে পারেন, যা ইউজার যদি কোনো প্যারামিটার না পাঠায় তবে সেগুলো ব্যবহার হবে।
উদাহরণ:
[Route("products/{id?}")]
public IActionResult ShowProduct(int? id = 1)
{
// Default id = 1 if no id is provided
return View();
}
3. Route Prefixing
Route Prefix ব্যবহার করে একটি নির্দিষ্ট কন্ট্রোলারের সব অ্যাকশনের জন্য সাধারণ একটি URL প্যাটার্ন নির্ধারণ করা যেতে পারে।
উদাহরণ:
[Route("admin/[controller]")]
public class ProductsController : Controller
{
[Route("list")]
public IActionResult List()
{
return View();
}
[Route("details/{id}")]
public IActionResult Details(int id)
{
return View();
}
}
এখানে admin/products/list বা admin/products/details/1 এই ধরনের URL ব্যবহার করা যাবে।
Routing এর সুবিধা
- URL Mapping সহজতর: Routing URL এবং অ্যাকশনের মধ্যে সহজে মেলবন্ধন তৈরি করে, যা অ্যাপ্লিকেশন ডেভেলপমেন্টকে অনেক সহজ করে।
- ডাইনামিক URL Handling: প্যারামিটার, কনস্ট্রেইন্ট, এবং ডিফল্ট ভ্যালু ব্যবহার করে ইউজার ফ্রেন্ডলি এবং ডাইনামিক URL তৈরি করা যায়।
- Flexible URL Structure: Attribute routing এর মাধ্যমে কন্ট্রোলার এবং অ্যাকশন URL সুনির্দিষ্টভাবে কাস্টমাইজ করা যায়।
- Scalability: Routing সিস্টেম সহজেই অ্যাপ্লিকেশন স্কেলিংয়ে সহায়তা করে, যেখানে নতুন URL প্যাটার্ন যোগ করতে সহজ হয়।
ASP.NET Core-এ Routing একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান যা অ্যাপ্লিকেশন নেভিগেশন ও কন্ট্রোলারের কার্যকলাপ নির্ধারণে সহায়ক। এর মাধ্যমে URL প্যাটার্ন, কনস্ট্রেইন্ট, এবং প্যারামিটার ব্যবহারের মাধ্যমে আরও কার্যকরী, ফ্লেক্সিবল এবং শক্তিশালী ওয়েব অ্যাপ্লিকেশন তৈরি করা সম্ভব।
Read more