ASP.Net Core হল একটি ওপেন সোর্স, ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন, API এবং মাইক্রোসার্ভিস তৈরি করার জন্য ব্যবহৃত হয়। ASP.Net Core অ্যাপ্লিকেশন তৈরি করতে, আপনাকে প্রথমে কিছু প্রাথমিক ধাপ অনুসরণ করতে হবে, যেমন .NET SDK ইনস্টল করা এবং প্রজেক্ট স্ট্রাকচার বুঝে কাজ শুরু করা। এখানে ASP.Net Core অ্যাপ্লিকেশন তৈরি করার বিস্তারিত প্রক্রিয়া দেওয়া হলো।
প্রথমে .NET SDK ইনস্টল করুন
ASP.Net Core অ্যাপ্লিকেশন তৈরি করতে, আপনার কম্পিউটারে .NET SDK (Software Development Kit) ইনস্টল থাকতে হবে। আপনি .NET SDK ডাউনলোড করতে পারেন অফিসিয়াল ওয়েবসাইট থেকে।
Visual Studio বা Visual Studio Code ইনস্টল করুন
ASP.Net Core অ্যাপ্লিকেশন তৈরি করতে, আপনি Visual Studio অথবা Visual Studio Code ব্যবহার করতে পারেন। Visual Studio-তে অনেক ধরনের বিল্ট-ইন টুলস এবং ফিচার রয়েছে যা ASP.Net Core ডেভেলপমেন্টের জন্য উপযুক্ত। Visual Studio Code একটি লাইটওয়েট এবং ক্রস-প্ল্যাটফর্ম কোড এডিটর যা ASP.Net Core এর সাথে ভালোভাবে কাজ করে।
নতুন ASP.Net Core প্রজেক্ট তৈরি করুন
Visual Studio বা Visual Studio Code-এ নতুন ASP.Net Core প্রজেক্ট তৈরি করার জন্য, নিচের ধাপগুলো অনুসরণ করুন:
CLI ব্যবহার করে প্রজেক্ট তৈরি করা
যদি আপনি কমান্ড লাইন (CLI) ব্যবহার করতে চান, তবে আপনি নিচের কমান্ডটি ব্যবহার করে ASP.Net Core প্রজেক্ট তৈরি করতে পারেন:
dotnet new mvc -n MyFirstAspNetCoreApp
এখানে mvc
হল প্রজেক্ট টেমপ্লেট এবং -n
দিয়ে প্রজেক্টের নাম দেওয়া হয়েছে। এই কমান্ডটি একটি নতুন ASP.Net Core MVC অ্যাপ্লিকেশন তৈরি করবে।
ASP.Net Core অ্যাপ্লিকেশনের একটি সাধারণ প্রজেক্ট স্ট্রাকচার নিম্নরূপ হয়:
ASP.Net Core অ্যাপ্লিকেশন তৈরির পর, আপনাকে কন্ট্রোলার, ভিউ এবং মডেল তৈরি করতে হবে। এর মাধ্যমে আপনি ডাইনামিক ওয়েব পেজ তৈরি করতে পারবেন।
Controller তৈরি করা
ASP.Net Core MVC অ্যাপ্লিকেশন তৈরি করার সময়, প্রথমে কন্ট্রোলার তৈরি করা হয় যা রিকোয়েস্ট প্রোসেস করে। কন্ট্রোলার তৈরি করতে, Controllers
ফোল্ডারে একটি নতুন C# ক্লাস তৈরি করুন, যেমন:
using Microsoft.AspNetCore.Mvc;
namespace MyFirstAspNetCoreApp.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
Model তৈরি করা
Model হল ডেটার রেপ্রেজেন্টেশন। মডেল ক্লাস তৈরি করতে, Models
ফোল্ডারে একটি নতুন C# ক্লাস তৈরি করুন, যেমন:
namespace MyFirstAspNetCoreApp.Models
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
}
View তৈরি করা
View হল UI উপাদান যা ইউজারের সাথে ইন্টারঅ্যাক্ট করে। Razor ভিউ তৈরি করতে, Views
ফোল্ডারে একটি নতুন Razor View (যেমন Index.cshtml
) তৈরি করুন:
@model MyFirstAspNetCoreApp.Models.Product
<!DOCTYPE html>
<html>
<head>
<title>Product</title>
</head>
<body>
<h1>@Model.Name</h1>
<p>Price: @Model.Price</p>
</body>
</html>
ASP.Net Core Routing
ASP.Net Core অ্যাপ্লিকেশনে রাউটিং হল এমন একটি প্রক্রিয়া, যা রিকোয়েস্টের URL কে নির্দিষ্ট কন্ট্রোলার ও অ্যাকশন মেথডের সাথে ম্যাপ করে। রাউটিং কনফিগার করা হয় Startup.cs
ফাইলে।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
ASP.Net Core Middleware
Middleware হল অ্যাপ্লিকেশন প্রক্রিয়ার অংশ, যা HTTP রিকোয়েস্ট এবং রেসপন্স প্রসেস করে। ASP.Net Core-এ আপনি কাস্টম Middleware তৈরি করতে পারেন, যা নির্দিষ্ট কাজ যেমন অথেনটিকেশন, লগিং বা অন্যান্য ফিচার চালায়।
public class MyMiddleware
{
private readonly RequestDelegate _next;
public MyMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext httpContext)
{
// কিছু কাস্টম প্রক্রিয়া
await _next(httpContext);
}
}
ASP.Net Core অ্যাপ্লিকেশন তৈরি করা সহজ এবং মডুলার। এটি আপনাকে একটি শক্তিশালী এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করার জন্য বিভিন্ন টুল এবং ফিচার সরবরাহ করে। কন্ট্রোলার, ভিউ, মডেল, রাউটিং এবং Middleware ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের কাঠামো এবং কার্যকারিতা সেটআপ করতে পারেন।
ASP.Net Core প্রজেক্ট স্ট্রাকচার আধুনিক ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি সুসংগঠিত এবং কার্যকরী ফাইল ও ফোল্ডার কাঠামো প্রদান করে। এটি কোডের মডুলারিটি এবং রক্ষণাবেক্ষণ সহজ করে। নিচে ASP.Net Core প্রজেক্টের স্ট্রাকচার এবং এর প্রধান উপাদানগুলি আলোচনা করা হলো।
ASP.Net Core প্রজেক্টের সাধারণ কাঠামো কিছুটা নিচের মতো হয়:
1. wwwroot
এটি স্ট্যাটিক ফাইল যেমন CSS, JavaScript, ইমেজ, ফন্ট ইত্যাদির জন্য নির্দিষ্ট ফোল্ডার। এই ফোল্ডারটি ওয়েব ব্রাউজারে সরাসরি এক্সেসযোগ্য।
/wwwroot/css
, /wwwroot/js
, /wwwroot/images
2. Controllers
এটি অ্যাপ্লিকেশনের কন্ট্রোলারগুলো ধারণ করে। কন্ট্রোলার হলো অ্যাপ্লিকেশনের অংশ যা HTTP রিকোয়েস্টের জন্য রেসপন্স তৈরি করে।
HomeController.cs
, AccountController.cs
3. Models
এই ফোল্ডারটি অ্যাপ্লিকেশনের মডেল ক্লাসগুলো ধারণ করে, যা ডেটার কাঠামো বা ডোমেইন লজিক সংরক্ষণ করে। মডেলগুলি সাধারণত ডেটাবেসের সাথে মিথস্ক্রিয়া করতে ব্যবহৃত হয়।
User.cs
, Product.cs
4. Views
এটি রেজার ভিউ ফাইলগুলি ধারণ করে, যেখানে ইউজার ইন্টারফেস তৈরি করা হয়। রেজার ফাইল (যেমন .cshtml
) ওয়েব পেজের HTML কন্টেন্ট এবং ডাইনামিক ডেটা রেন্ডার করে।
/Views/Home/Index.cshtml
5. Properties
এই ফোল্ডারটি প্রজেক্টের বৈশিষ্ট্য সম্পর্কিত ফাইলগুলি ধারণ করে, যেমন প্রজেক্টের সেটিংস বা কনফিগারেশন।
launchSettings.json
6. appsettings.json
এই ফাইলটি অ্যাপ্লিকেশনের কনফিগারেশন সেটিংস ধারণ করে, যেমন ডাটাবেস সংযোগ স্ট্রিং, লগিং কনফিগারেশন ইত্যাদি।
{
"ConnectionStrings": {
"DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
},
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}
7. Startup.cs
এই ফাইলটি অ্যাপ্লিকেশন চালু করার জন্য প্রাথমিক কনফিগারেশন নির্ধারণ করে, যেমন middleware পাইলাইন, ডিপেনডেন্সি ইনজেকশন, রাউটিং এবং কনফিগারেশন সেটআপ।
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc();
}
}
8. Program.cs
এই ফাইলটি অ্যাপ্লিকেশনটি শুরু করার মূল পয়েন্ট। এখানে CreateHostBuilder
মেথডের মাধ্যমে হোস্ট তৈরি হয় এবং অ্যাপ্লিকেশনটি রান করে।
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
9. Data
এটি ডেটাবেস বা ডেটা অ্যাক্সেস সম্পর্কিত ক্লাস ও ডোমেইন মডেল ধারণ করে, যেমন DbContext
এবং অন্য ডেটা ম্যানেজমেন্ট ক্লাস।
ApplicationDbContext.cs
10. Services
এই ফোল্ডারটি সার্ভিস ক্লাস ধারণ করে, যা অ্যাপ্লিকেশনের বিজনেস লজিক এবং ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়।
EmailService.cs
, UserService.cs
Middleware
ASP.Net Core প্রজেক্টে Middleware হলো একটি চেইন অব কম্পোনেন্ট যা HTTP রিকোয়েস্ট এবং রেসপন্সে পরিবর্তন আনতে সহায়তা করে। Startup.cs
ফাইলে Middleware কনফিগার করা হয়।
Dependency Injection
ASP.Net Core প্রজেক্টে ডিপেনডেন্সি ইনজেকশন বিল্ট-ইন সমর্থিত। এতে ক্লাসগুলোর মধ্যে ডিপেনডেন্সি বা পরিষেবা ইনজেক্ট করে সহজেই ম্যানেজ করা যায়।
Routing
ASP.Net Core প্রজেক্টে রাউটিং HTTP রিকোয়েস্টকে কন্ট্রোলার অ্যাকশন বা ভিউ এর সাথে ম্যাপ করে। রাউটিং প্রক্রিয়া সাধারণত Startup.cs
ফাইলে কনফিগার করা হয়।
সারাংশ
ASP.Net Core প্রজেক্ট স্ট্রাকচার একটি পরিষ্কার এবং মডুলার কাঠামো সরবরাহ করে, যা অ্যাপ্লিকেশনের রক্ষণাবেক্ষণ এবং স্কেলেবিলিটি সহজ করে তোলে। এর মধ্যে স্ট্যাটিক ফাইল, কন্ট্রোলার, ভিউ, মডেল, কনফিগারেশন, এবং ডেটাবেস সম্পর্কিত ফোল্ডারসহ সবকিছু থাকে, যা অ্যাপ্লিকেশন তৈরি, টেস্টিং এবং ডেপ্লয়মেন্টকে আরও কার্যকরী করে তোলে।
ASP.NET Core MVC অ্যাপ্লিকেশনে Controller, View, এবং Model (এনক্যাপসুলেটেড ডাটা এবং ব্যবসায়িক লজিক) মূল ভূমিকা পালন করে। এটি Model-View-Controller (MVC) আর্কিটেকচার অনুযায়ী কাজ করে, যেখানে:
এখানে আমরা কিভাবে ASP.NET Core MVC-তে Controller, View, এবং Model তৈরি করতে হয়, তা বিস্তারিতভাবে জানব।
Controller হল অ্যাপ্লিকেশনের লজিকাল ইউনিট যা ইউজারের রিকোয়েস্ট গ্রহণ করে, প্রক্রিয়া করে এবং উপযুক্ত ভিউ বা ডাটা প্রদান করে। ASP.NET Core MVC তে কন্ট্রোলার ক্লাস তৈরি করতে হয়।
Controller তৈরি করার পদক্ষেপ:
Controllers
ফোল্ডারে নতুন একটি ক্লাস তৈরি করুন, এবং এই ক্লাসটি Controller
ক্লাস থেকে ইনহেরিট করুন।নিচে একটি উদাহরণ:
using Microsoft.AspNetCore.Mvc;
namespace MyApp.Controllers
{
public class HomeController : Controller
{
// Action Method
public IActionResult Index()
{
return View(); // View রিটার্ন
}
public IActionResult About()
{
return View();
}
}
}
এখানে HomeController
ক্লাসে দুটি Action Method আছে: Index
এবং About
। প্রতিটি Action Method একটি ভিউ রিটার্ন করে।
View হল ASP.NET Core MVC অ্যাপ্লিকেশনের ইউজার ইন্টারফেস। এটি ক্লায়েন্টের কাছে প্রদর্শিত হয়। ভিউ সাধারণত HTML এবং C# Razor সিনট্যাক্সে লেখা হয়।
View তৈরি করার পদক্ষেপ:
Views
ফোল্ডারে কন্ট্রোলারের নামে একটি ফোল্ডার তৈরি করুন (যেমন, Home
), এবং তারপর সেখানে .cshtml
ফাইল তৈরি করুন।return View()
ব্যবহার করে এই ভিউ রেন্ডার করুন।নিচে একটি উদাহরণ:
Home/Index.cshtml:
@{
ViewData["Title"] = "Home Page";
}
<h1>Welcome to the Home Page</h1>
<p>This is the index view.</p>
Home/About.cshtml:
@{
ViewData["Title"] = "About Page";
}
<h1>About Us</h1>
<p>This is the about view.</p>
এখানে, Index.cshtml
এবং About.cshtml
ভিউ ফাইল দুটি HTML রেন্ডার করে, এবং কন্ট্রোলার থেকে পাঠানো ডাটা (যেমন, ViewData["Title"]
) ব্যবহার করে শিরোনাম দেখায়।
Model হল ডাটা, বা একে বলতে পারেন ডোমেইন অবজেক্ট, যা অ্যাপ্লিকেশনটির লজিকাল অংশ। মডেল সাধারণত ক্লাস হিসেবে তৈরি হয়, এবং এতে প্রপার্টি থাকে যা ডাটাবেসে থাকা তথ্যের প্রতিনিধিত্ব করে।
Model তৈরি করার পদক্ষেপ:
Models
ফোল্ডারে একটি ক্লাস তৈরি করুন এবং এতে প্রপার্টি ডিফাইন করুন।নিচে একটি উদাহরণ:
Product.cs (Model):
namespace MyApp.Models
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
}
এখানে Product
ক্লাসটি একটি মডেল যা একটি পণ্যের আইডি, নাম এবং দাম প্রতিনিধিত্ব করে।
এখন আমরা দেখব কিভাবে কন্ট্রোলার, মডেল এবং ভিউ একত্রে ব্যবহার করতে হয়:
HomeController.cs:
using Microsoft.AspNetCore.Mvc;
using MyApp.Models;
namespace MyApp.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
// Model তৈরি
var product = new Product
{
Id = 1,
Name = "Laptop",
Price = 1200.50M
};
// Model ভিউতে পাঠানো
return View(product);
}
}
}
Home/Index.cshtml:
@model MyApp.Models.Product
@{
ViewData["Title"] = "Home Page";
}
<h1>@Model.Name</h1>
<p>Price: $@Model.Price</p>
এখানে, HomeController
-এ একটি Product
মডেল তৈরি করা হয়েছে এবং Index
ভিউতে পাঠানো হয়েছে। ভিউটি মডেলের ডাটা (যেমন পণ্যের নাম এবং দাম) রেন্ডার করে দেখাবে।
সারাংশ
ASP.NET Core MVC অ্যাপ্লিকেশন তৈরির মূল উপাদান হলো Controller, View, এবং Model। Controller ইউজারের রিকোয়েস্ট প্রক্রিয়া করে, Model ডাটা প্রতিনিধিত্ব করে, এবং View ইউজার ইন্টারফেস সরবরাহ করে। এই তিনটি উপাদান একত্রে অ্যাপ্লিকেশনটির ফাংশনালিটি এবং ইউজার ইন্টারফেস তৈরি করে।
ASP.Net Core অ্যাপ্লিকেশনে Routing এবং Middleware দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যা HTTP রিকোয়েস্ট প্রক্রিয়ার নিয়ন্ত্রণ এবং অ্যাপ্লিকেশন লজিক পরিচালনা করে। এই দুটি প্রযুক্তি .NET Core অ্যাপ্লিকেশনের ফ্লেক্সিবিলিটি এবং শক্তি বাড়াতে সহায়তা করে।
Routing হল একটি প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশনটি একটি নির্দিষ্ট URL প্যাটার্নের ভিত্তিতে রিকোয়েস্ট প্রক্রিয়া করে এবং তা নির্দিষ্ট কন্ট্রোলার বা অ্যাকশনের সাথে যুক্ত করে। এটি HTTP রিকোয়েস্ট এর পাথ এবং মেথড (GET, POST, ইত্যাদি) অনুযায়ী অ্যাপ্লিকেশনটির ভিন্ন ভিন্ন অংশে রিকোয়েস্ট পাঠানোর কাজ করে।
ASP.Net Core-এ রাউটিং URL Patterns এবং Route Handlers এর মধ্যে সম্পর্ক নির্ধারণ করে। সাধারণত, রাউটিং প্যাটার্নগুলি কন্ট্রোলার এবং অ্যাকশনের মাধ্যমে নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, যদি কোনো ইউজার /home/index
URL এ প্রবেশ করে, তবে সেটি HomeController
এর Index
অ্যাকশন মেথডকে কল করবে।
ASP.Net Core-এ রাউটিং কনফিগার করা হয় Startup.cs
ফাইলের মধ্যে, যেখানে Configure
মেথডে রাউটিং সিস্টেমের কনফিগারেশন করা হয়। সাধারণভাবে, UseRouting()
এবং UseEndpoints()
মেথড ব্যবহার করা হয়।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting(); // রাউটিং সিস্টেম সক্রিয় করা
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}"); // ডিফল্ট রাউটিং প্যাটার্ন
});
}
এই কনফিগারেশনে {controller=Home}
নির্দেশ করে যে, যদি কোনো কন্ট্রোলার না দেওয়া হয় তবে HomeController
ব্যবহার হবে। {action=Index}
নির্দেশ করে যে, যদি কোনো অ্যাকশন না দেওয়া হয় তবে Index
অ্যাকশন কল হবে। {id?}
অংশটি অপশনাল প্যারামিটার নির্দেশ করে।
ASP.Net Core-এ Attribute Routing ব্যবহারের মাধ্যমে URL রাউটিং আরো সহজ এবং কাস্টমাইজড করা যায়। এটি অ্যাকশনে সরাসরি URL প্যাটার্ন অ্যাট্রিবিউট হিসেবে যুক্ত করা যায়, যা আরও বেশি ফ্লেক্সিবিলিটি প্রদান করে। উদাহরণস্বরূপ:
[Route("home")]
public class HomeController : Controller
{
[Route("index")]
public IActionResult Index()
{
return View();
}
[Route("about")]
public IActionResult About()
{
return View();
}
}
এই কন্ট্রোলারে /home/index
এবং /home/about
URL পাথের জন্য আলাদা রাউট তৈরি করা হয়েছে।
Middleware হল একটি প্রোগ্রামাল কম্পোনেন্ট যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যে চলে। এটি পিপলাইনে বিভিন্ন ধাপে কাজ করতে পারে, যেমন রিকোয়েস্ট চেক করা, রেসপন্স মডিফাই করা, বা লগিং, অথেনটিকেশন, অথরাইজেশন প্রভৃতি কাজ করা। ASP.Net Core অ্যাপ্লিকেশনটি একটি মিডলওয়্যার পিপলাইনে চলে যেখানে একের পর এক মিডলওয়্যার কম্পোনেন্ট রিকোয়েস্ট প্রক্রিয়া করে।
ASP.Net Core-এ Middleware সাধারণত HTTP রিকোয়েস্টের শুরুতে চলে এবং পরবর্তী মিডলওয়্যারের কাছে রিকোয়েস্টটি পাঠানোর আগে এটি একটি কাজ সম্পাদন করে। বিভিন্ন মিডলওয়্যার যেমন অথেনটিকেশন, লগিং, সেশন হ্যান্ডলিং, কুকি ম্যানেজমেন্ট ইত্যাদি কাজ সম্পাদন করতে পারে।
ASP.Net Core অ্যাপ্লিকেশনে মিডলওয়্যার পিপলাইনটি সোজা লিনিয়ার চেইন হিসেবে কাজ করে। এর মধ্যে বিভিন্ন মিডলওয়্যার কম্পোনেন্ট থাকে, যেমন:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseMiddleware<CustomMiddleware>(); // Custom Middleware প্রয়োগ করা
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
উপরের কোডে CustomMiddleware
একটি কাস্টম মিডলওয়্যার, যা রিকোয়েস্ট পিপলাইনে যোগ করা হয়েছে।
ASP.Net Core-এ কাস্টম মিডলওয়্যার তৈরি করা খুবই সহজ। একটি কাস্টম মিডলওয়্যার তৈরির জন্য আপনাকে একটি ক্লাস তৈরি করতে হবে, যা RequestDelegate
ব্যবহার করবে।
public class CustomMiddleware
{
private readonly RequestDelegate _next;
public CustomMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// রিকোয়েস্ট প্রক্রিয়া শুরু হওয়ার আগে কিছু কাজ করা
Console.WriteLine("Custom Middleware - Request Start");
await _next(context); // পরবর্তী মিডলওয়্যারে রিকোয়েস্ট পাঠানো
// রিকোয়েস্ট প্রক্রিয়া শেষ হওয়ার পরে কিছু কাজ করা
Console.WriteLine("Custom Middleware - Response End");
}
}
এটি পরে Startup.cs
-এর Configure
মেথডে ইনজেক্ট করা হয়, যেখানে মিডলওয়্যার পিপলাইনে এটি যোগ করা হবে।
সারাংশ
ASP.Net Core-এ Routing এবং Middleware এর মাধ্যমে HTTP রিকোয়েস্টের প্রক্রিয়া অত্যন্ত ফ্লেক্সিবল এবং কাস্টমাইজড করা যায়। রাউটিং সিস্টেম URL প্যাটার্নের ভিত্তিতে রিকোয়েস্ট কন্ট্রোলার এবং অ্যাকশন মেথডে পাঠায়, এবং মিডলওয়্যার পিপলাইন রিকোয়েস্ট এবং রেসপন্স প্রক্রিয়া করে। কাস্টম মিডলওয়্যার তৈরি এবং রাউটিং কনফিগারেশনের মাধ্যমে আপনি অ্যাপ্লিকেশনকে আরও দক্ষ এবং সুনির্দিষ্টভাবে নিয়ন্ত্রণ করতে পারবেন।
Dependency Injection (DI) একটি ডিজাইন প্যাটার্ন, যা অ্যাপ্লিকেশনগুলিতে ক্লাসের মধ্যে নির্ভরতা (dependencies) ইনজেক্ট করার একটি পদ্ধতি। এর মাধ্যমে কোডে নমনীয়তা, টেস্টেবিলিটি এবং রিইউজেবিলিটি বৃদ্ধি পায়। .NET Core এ Dependency Injection ব্যবহারের জন্য একটি বিল্ট-ইন সুবিধা রয়েছে, যা ডেভেলপারদের কমপ্লেক্স ডিপেনডেন্সি ম্যানেজমেন্টে সহায়তা করে।
Dependency Injection মূলত একটি কৌশল, যা ম্যানুয়ালি নির্ভরতা (dependency) তৈরি করার বদলে স্বয়ংক্রিয়ভাবে তা ক্লাসে ইনজেক্ট করে দেয়। উদাহরণস্বরূপ, যদি কোনো ক্লাস অন্য একটি ক্লাসের উপর নির্ভরশীল হয়, তাহলে DI ওই নির্ভরশীল ক্লাসটি সেই ক্লাসে ইনজেক্ট করে দেয়, যার ফলে কোডটি আরও পরিষ্কার ও পরিচালনাযোগ্য হয়। DI ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন কম্পোনেন্টগুলোর মধ্যে কম সম্পর্ক (loose coupling) স্থাপন করা হয়।
.NET Core এ তিন ধরনের Dependency Injection রয়েছে:
.NET Core এ DI ব্যবহারের জন্য আপনাকে Startup.cs
ফাইলের ConfigureServices
মেথডে সার্ভিস রেজিস্টার করতে হয়। এখানে একটি সাধারণ উদাহরণ দেওয়া হলো:
ধরা যাক, আমাদের একটি IEmailService
ইন্টারফেস এবং তার একটি ইমপ্লিমেন্টেশন EmailService
আছে, এবং আমরা এই সার্ভিসটিকে ক্লাসে ইনজেক্ট করতে চাই।
public interface IEmailService
{
void SendEmail(string to, string subject, string body);
}
public class EmailService : IEmailService
{
public void SendEmail(string to, string subject, string body)
{
// ইমেইল পাঠানোর কোড
Console.WriteLine($"Email sent to {to} with subject {subject}");
}
}
Startup.cs
ফাইলে Dependency Injection রেজিস্টার করুন:public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// Dependency Injection রেজিস্টার করা হচ্ছে
services.AddScoped<IEmailService, EmailService>(); // Scoped ইনজেকশন
}
}
IEmailService
ইনজেক্ট করতে হবে:public class MyController : Controller
{
private readonly IEmailService _emailService;
// Dependency Injection এর মাধ্যমে IEmailService ইনজেক্ট করা হচ্ছে
public MyController(IEmailService emailService)
{
_emailService = emailService;
}
public IActionResult SendTestEmail()
{
_emailService.SendEmail("test@example.com", "Test Subject", "Test Body");
return Ok("Email sent");
}
}
এখানে, MyController
কনস্ট্রাক্টরে IEmailService
ইনজেক্ট করা হয়েছে। এটি Dependency Injection এর মাধ্যমে করা হয়েছে, যা স্বয়ংক্রিয়ভাবে EmailService
ক্লাসের একটি ইনস্ট্যান্স তৈরি করবে এবং কন্ট্রোলারে ইনজেক্ট করবে।
Mock
অবজেক্ট তৈরি করে আসল ডিপেনডেন্সির পরিবর্তে টেস্ট ডিপেনডেন্সি ব্যবহার করতে পারেন।Dependency Injection একটি শক্তিশালী ডিজাইন প্যাটার্ন যা .NET Core এ কোডের নমনীয়তা, টেস্টেবিলিটি এবং রিইউজেবিলিটি বাড়ায়। এটি অ্যাপ্লিকেশনে কমপ্লেক্স নির্ভরশীলতা ম্যানেজমেন্টে সাহায্য করে, এবং অ্যাপ্লিকেশনগুলির মধ্যে লুজ কাপলিং নিশ্চিত করে। .NET Core এর বিল্ট-ইন DI কনটেইনারের মাধ্যমে ডেভেলপাররা সহজে তাদের ডিপেনডেন্সি ইনজেক্ট করতে পারেন, যা অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও কার্যকর ও টেস্ট-ফ্রেন্ডলি করে তোলে।
common.read_more