ASP.Net Core অ্যাপ্লিকেশন তৈরি (Creating an ASP.Net Core Application)

Microsoft Technologies - ডট নেট কোর (Dot.Net Core)
198
198

ASP.Net Core হল একটি ওপেন সোর্স, ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন, API এবং মাইক্রোসার্ভিস তৈরি করার জন্য ব্যবহৃত হয়। ASP.Net Core অ্যাপ্লিকেশন তৈরি করতে, আপনাকে প্রথমে কিছু প্রাথমিক ধাপ অনুসরণ করতে হবে, যেমন .NET SDK ইনস্টল করা এবং প্রজেক্ট স্ট্রাকচার বুঝে কাজ শুরু করা। এখানে ASP.Net Core অ্যাপ্লিকেশন তৈরি করার বিস্তারিত প্রক্রিয়া দেওয়া হলো।


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 প্রজেক্ট তৈরি

নতুন ASP.Net Core প্রজেক্ট তৈরি করুন
Visual Studio বা Visual Studio Code-এ নতুন ASP.Net Core প্রজেক্ট তৈরি করার জন্য, নিচের ধাপগুলো অনুসরণ করুন:

  1. Visual Studio ব্যবহার করে নতুন প্রজেক্ট তৈরি করা
    • Visual Studio খুলুন।
    • "Create a new project" এ ক্লিক করুন।
    • "ASP.NET Core Web Application" নির্বাচন করুন এবং "Next" ক্লিক করুন।
    • প্রজেক্টের নাম এবং লোকেশন নির্বাচন করুন এবং "Create" ক্লিক করুন।
    • পরবর্তীতে, প্রজেক্ট টেমপ্লেট নির্বাচন করুন। সাধারণত, "Web Application (Model-View-Controller)" অথবা "API" নির্বাচন করা হয়।
    • ASP.Net Core সংস্করণ নির্বাচন করুন (যেমন .NET 6 বা .NET 7) এবং "Create" ক্লিক করুন।
  2. CLI ব্যবহার করে প্রজেক্ট তৈরি করা
    যদি আপনি কমান্ড লাইন (CLI) ব্যবহার করতে চান, তবে আপনি নিচের কমান্ডটি ব্যবহার করে ASP.Net Core প্রজেক্ট তৈরি করতে পারেন:

    dotnet new mvc -n MyFirstAspNetCoreApp
    

    এখানে mvc হল প্রজেক্ট টেমপ্লেট এবং -n দিয়ে প্রজেক্টের নাম দেওয়া হয়েছে। এই কমান্ডটি একটি নতুন ASP.Net Core MVC অ্যাপ্লিকেশন তৈরি করবে।


ASP.Net Core প্রজেক্ট স্ট্রাকচার

ASP.Net Core অ্যাপ্লিকেশনের একটি সাধারণ প্রজেক্ট স্ট্রাকচার নিম্নরূপ হয়:

  • Program.cs: এটি অ্যাপ্লিকেশনটির এন্ট্রি পয়েন্ট। এখানে অ্যাপ্লিকেশন কনফিগারেশন এবং সার্ভিসগুলোর ইনিশিয়ালাইজেশন হয়।
  • Startup.cs: এটি অ্যাপ্লিকেশনটির কনফিগারেশন ও ইনিশিয়ালাইজেশন ফাইল। এখানে Middleware, Dependency Injection, রাউটিং এবং অন্যান্য কনফিগারেশন সেটআপ করা হয়।
  • Controllers: এখানে অ্যাপ্লিকেশনটির কন্ট্রোলারগুলো থাকে। কন্ট্রোলার HTTP রিকোয়েস্ট প্রোসেস করে এবং প্রয়োজনীয় রেসপন্স দেয়।
  • Views: এই ফোল্ডারে Razor Views থাকে, যেখানে HTML এবং C# কোডের সংমিশ্রণ থাকে। এটি অ্যাপ্লিকেশনের UI অংশ।
  • Models: এই ফোল্ডারে ডেটা মডেল থাকে, যা ডেটা স্ট্রাকচার এবং ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে।
  • wwwroot: এই ফোল্ডারে স্ট্যাটিক ফাইল (যেমন CSS, JavaScript, এবং ইমেজ) থাকে, যা ব্রাউজারে সরাসরি অ্যাক্সেস করা যায়।

Controller, View, এবং Model তৈরি করা

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>

Routing এবং Middleware

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 ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের কাঠামো এবং কার্যকারিতা সেটআপ করতে পারেন।

common.content_added_by

ASP.Net Core প্রজেক্ট স্ট্রাকচার

196
196

ASP.Net Core প্রজেক্ট স্ট্রাকচার আধুনিক ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি সুসংগঠিত এবং কার্যকরী ফাইল ও ফোল্ডার কাঠামো প্রদান করে। এটি কোডের মডুলারিটি এবং রক্ষণাবেক্ষণ সহজ করে। নিচে ASP.Net Core প্রজেক্টের স্ট্রাকচার এবং এর প্রধান উপাদানগুলি আলোচনা করা হলো।


প্রজেক্ট ফোল্ডার স্ট্রাকচার

ASP.Net Core প্রজেক্টের সাধারণ কাঠামো কিছুটা নিচের মতো হয়:

1. wwwroot
এটি স্ট্যাটিক ফাইল যেমন CSS, JavaScript, ইমেজ, ফন্ট ইত্যাদির জন্য নির্দিষ্ট ফোল্ডার। এই ফোল্ডারটি ওয়েব ব্রাউজারে সরাসরি এক্সেসযোগ্য।

  • Example: /wwwroot/css, /wwwroot/js, /wwwroot/images

2. Controllers
এটি অ্যাপ্লিকেশনের কন্ট্রোলারগুলো ধারণ করে। কন্ট্রোলার হলো অ্যাপ্লিকেশনের অংশ যা HTTP রিকোয়েস্টের জন্য রেসপন্স তৈরি করে।

  • Example: HomeController.cs, AccountController.cs

3. Models
এই ফোল্ডারটি অ্যাপ্লিকেশনের মডেল ক্লাসগুলো ধারণ করে, যা ডেটার কাঠামো বা ডোমেইন লজিক সংরক্ষণ করে। মডেলগুলি সাধারণত ডেটাবেসের সাথে মিথস্ক্রিয়া করতে ব্যবহৃত হয়।

  • Example: User.cs, Product.cs

4. Views
এটি রেজার ভিউ ফাইলগুলি ধারণ করে, যেখানে ইউজার ইন্টারফেস তৈরি করা হয়। রেজার ফাইল (যেমন .cshtml) ওয়েব পেজের HTML কন্টেন্ট এবং ডাইনামিক ডেটা রেন্ডার করে।

  • Example: /Views/Home/Index.cshtml

5. Properties
এই ফোল্ডারটি প্রজেক্টের বৈশিষ্ট্য সম্পর্কিত ফাইলগুলি ধারণ করে, যেমন প্রজেক্টের সেটিংস বা কনফিগারেশন।

  • Example: launchSettings.json

6. appsettings.json
এই ফাইলটি অ্যাপ্লিকেশনের কনফিগারেশন সেটিংস ধারণ করে, যেমন ডাটাবেস সংযোগ স্ট্রিং, লগিং কনফিগারেশন ইত্যাদি।

  • Example:
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  }
}

7. Startup.cs
এই ফাইলটি অ্যাপ্লিকেশন চালু করার জন্য প্রাথমিক কনফিগারেশন নির্ধারণ করে, যেমন middleware পাইলাইন, ডিপেনডেন্সি ইনজেকশন, রাউটিং এবং কনফিগারেশন সেটআপ।

  • Example:
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
    }
}

8. Program.cs
এই ফাইলটি অ্যাপ্লিকেশনটি শুরু করার মূল পয়েন্ট। এখানে CreateHostBuilder মেথডের মাধ্যমে হোস্ট তৈরি হয় এবং অ্যাপ্লিকেশনটি রান করে।

  • Example:
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 এবং অন্য ডেটা ম্যানেজমেন্ট ক্লাস।

  • Example: ApplicationDbContext.cs

10. Services
এই ফোল্ডারটি সার্ভিস ক্লাস ধারণ করে, যা অ্যাপ্লিকেশনের বিজনেস লজিক এবং ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়।

  • Example: EmailService.cs, UserService.cs

ASP.Net Core প্রজেক্টের মূল উপাদান


Middleware
ASP.Net Core প্রজেক্টে Middleware হলো একটি চেইন অব কম্পোনেন্ট যা HTTP রিকোয়েস্ট এবং রেসপন্সে পরিবর্তন আনতে সহায়তা করে। Startup.cs ফাইলে Middleware কনফিগার করা হয়।

Dependency Injection
ASP.Net Core প্রজেক্টে ডিপেনডেন্সি ইনজেকশন বিল্ট-ইন সমর্থিত। এতে ক্লাসগুলোর মধ্যে ডিপেনডেন্সি বা পরিষেবা ইনজেক্ট করে সহজেই ম্যানেজ করা যায়।

Routing
ASP.Net Core প্রজেক্টে রাউটিং HTTP রিকোয়েস্টকে কন্ট্রোলার অ্যাকশন বা ভিউ এর সাথে ম্যাপ করে। রাউটিং প্রক্রিয়া সাধারণত Startup.cs ফাইলে কনফিগার করা হয়।


সারাংশ
ASP.Net Core প্রজেক্ট স্ট্রাকচার একটি পরিষ্কার এবং মডুলার কাঠামো সরবরাহ করে, যা অ্যাপ্লিকেশনের রক্ষণাবেক্ষণ এবং স্কেলেবিলিটি সহজ করে তোলে। এর মধ্যে স্ট্যাটিক ফাইল, কন্ট্রোলার, ভিউ, মডেল, কনফিগারেশন, এবং ডেটাবেস সম্পর্কিত ফোল্ডারসহ সবকিছু থাকে, যা অ্যাপ্লিকেশন তৈরি, টেস্টিং এবং ডেপ্লয়মেন্টকে আরও কার্যকরী করে তোলে।

common.content_added_by

Controller, View, এবং Model তৈরি করা

206
206

ASP.NET Core MVC অ্যাপ্লিকেশনে Controller, View, এবং Model (এনক্যাপসুলেটেড ডাটা এবং ব্যবসায়িক লজিক) মূল ভূমিকা পালন করে। এটি Model-View-Controller (MVC) আর্কিটেকচার অনুযায়ী কাজ করে, যেখানে:

  • Model ডাটা এবং লজিক প্রতিনিধিত্ব করে
  • View ইউজার ইন্টারফেস বা ভিজ্যুয়াল রেন্ডারিং সরবরাহ করে
  • Controller ক্লায়েন্টের রিকোয়েস্ট প্রক্রিয়া করে এবং যথাযথ মডেল এবং ভিউ নির্ধারণ করে

এখানে আমরা কিভাবে ASP.NET Core MVC-তে Controller, View, এবং Model তৈরি করতে হয়, তা বিস্তারিতভাবে জানব।


Controller তৈরি করা

Controller হল অ্যাপ্লিকেশনের লজিকাল ইউনিট যা ইউজারের রিকোয়েস্ট গ্রহণ করে, প্রক্রিয়া করে এবং উপযুক্ত ভিউ বা ডাটা প্রদান করে। ASP.NET Core MVC তে কন্ট্রোলার ক্লাস তৈরি করতে হয়।

Controller তৈরি করার পদক্ষেপ:

  1. Controller ক্লাস তৈরি: Controllers ফোল্ডারে নতুন একটি ক্লাস তৈরি করুন, এবং এই ক্লাসটি Controller ক্লাস থেকে ইনহেরিট করুন।
  2. Action Methods তৈরি: কন্ট্রোলার ক্লাসে এক বা একাধিক Action Method তৈরি করুন যা রিকোয়েস্ট হ্যান্ডলিং করে।

নিচে একটি উদাহরণ:

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 তৈরি করা

View হল ASP.NET Core MVC অ্যাপ্লিকেশনের ইউজার ইন্টারফেস। এটি ক্লায়েন্টের কাছে প্রদর্শিত হয়। ভিউ সাধারণত HTML এবং C# Razor সিনট্যাক্সে লেখা হয়।

View তৈরি করার পদক্ষেপ:

  1. View ফাইল তৈরি: Views ফোল্ডারে কন্ট্রোলারের নামে একটি ফোল্ডার তৈরি করুন (যেমন, Home), এবং তারপর সেখানে .cshtml ফাইল তৈরি করুন।
  2. View রেন্ডার করা: কন্ট্রোলার অ্যাকশনে 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 হল ডাটা, বা একে বলতে পারেন ডোমেইন অবজেক্ট, যা অ্যাপ্লিকেশনটির লজিকাল অংশ। মডেল সাধারণত ক্লাস হিসেবে তৈরি হয়, এবং এতে প্রপার্টি থাকে যা ডাটাবেসে থাকা তথ্যের প্রতিনিধিত্ব করে।

Model তৈরি করার পদক্ষেপ:

  1. Model ক্লাস তৈরি: Models ফোল্ডারে একটি ক্লাস তৈরি করুন এবং এতে প্রপার্টি ডিফাইন করুন।
  2. ডাটা ক্লাস ব্যবহার: মডেলকে কন্ট্রোলারের মধ্যে ব্যবহার করে ভিউতে ডাটা পাঠানো হয়।

নিচে একটি উদাহরণ:

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 ক্লাসটি একটি মডেল যা একটি পণ্যের আইডি, নাম এবং দাম প্রতিনিধিত্ব করে।


Controller, View, এবং Model একত্রে ব্যবহার করা

এখন আমরা দেখব কিভাবে কন্ট্রোলার, মডেল এবং ভিউ একত্রে ব্যবহার করতে হয়:

  1. কন্ট্রোলারে Model ডাটা তৈরি করুন।
  2. সেই ডাটাকে View তে পাঠান।
  3. View তে ডাটা রেন্ডার করুন।

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, এবং ModelController ইউজারের রিকোয়েস্ট প্রক্রিয়া করে, Model ডাটা প্রতিনিধিত্ব করে, এবং View ইউজার ইন্টারফেস সরবরাহ করে। এই তিনটি উপাদান একত্রে অ্যাপ্লিকেশনটির ফাংশনালিটি এবং ইউজার ইন্টারফেস তৈরি করে।

common.content_added_by

ASP.Net Core Routing এবং Middleware

230
230

ASP.Net Core অ্যাপ্লিকেশনে Routing এবং Middleware দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যা HTTP রিকোয়েস্ট প্রক্রিয়ার নিয়ন্ত্রণ এবং অ্যাপ্লিকেশন লজিক পরিচালনা করে। এই দুটি প্রযুক্তি .NET Core অ্যাপ্লিকেশনের ফ্লেক্সিবিলিটি এবং শক্তি বাড়াতে সহায়তা করে।


Routing কী এবং কেন প্রয়োজন?

Routing হল একটি প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশনটি একটি নির্দিষ্ট URL প্যাটার্নের ভিত্তিতে রিকোয়েস্ট প্রক্রিয়া করে এবং তা নির্দিষ্ট কন্ট্রোলার বা অ্যাকশনের সাথে যুক্ত করে। এটি HTTP রিকোয়েস্ট এর পাথ এবং মেথড (GET, POST, ইত্যাদি) অনুযায়ী অ্যাপ্লিকেশনটির ভিন্ন ভিন্ন অংশে রিকোয়েস্ট পাঠানোর কাজ করে।

ASP.Net Core-এ রাউটিং URL Patterns এবং Route Handlers এর মধ্যে সম্পর্ক নির্ধারণ করে। সাধারণত, রাউটিং প্যাটার্নগুলি কন্ট্রোলার এবং অ্যাকশনের মাধ্যমে নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, যদি কোনো ইউজার /home/index URL এ প্রবেশ করে, তবে সেটি HomeController এর Index অ্যাকশন মেথডকে কল করবে।


ASP.Net Core Routing কনফিগার করা

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?} অংশটি অপশনাল প্যারামিটার নির্দেশ করে।


Attribute Routing

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 কী এবং কেন প্রয়োজন?

Middleware হল একটি প্রোগ্রামাল কম্পোনেন্ট যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যে চলে। এটি পিপলাইনে বিভিন্ন ধাপে কাজ করতে পারে, যেমন রিকোয়েস্ট চেক করা, রেসপন্স মডিফাই করা, বা লগিং, অথেনটিকেশন, অথরাইজেশন প্রভৃতি কাজ করা। ASP.Net Core অ্যাপ্লিকেশনটি একটি মিডলওয়্যার পিপলাইনে চলে যেখানে একের পর এক মিডলওয়্যার কম্পোনেন্ট রিকোয়েস্ট প্রক্রিয়া করে।

ASP.Net Core-এ Middleware সাধারণত HTTP রিকোয়েস্টের শুরুতে চলে এবং পরবর্তী মিডলওয়্যারের কাছে রিকোয়েস্টটি পাঠানোর আগে এটি একটি কাজ সম্পাদন করে। বিভিন্ন মিডলওয়্যার যেমন অথেনটিকেশন, লগিং, সেশন হ্যান্ডলিং, কুকি ম্যানেজমেন্ট ইত্যাদি কাজ সম্পাদন করতে পারে।


Middleware পিপলাইন

ASP.Net Core অ্যাপ্লিকেশনে মিডলওয়্যার পিপলাইনটি সোজা লিনিয়ার চেইন হিসেবে কাজ করে। এর মধ্যে বিভিন্ন মিডলওয়্যার কম্পোনেন্ট থাকে, যেমন:

  • Authentication: ব্যবহারকারীর পরিচয় যাচাই করা।
  • Authorization: ব্যবহারকারীর অধিকার যাচাই করা।
  • Static Files: স্ট্যাটিক ফাইলগুলো (যেমন CSS, JS, ইমেজ) সেবা প্রদান করা।
  • Routing: রিকোয়েস্ট রাউটিং করা।
  • Endpoints: রাউটেড কন্ট্রোলার অ্যাকশন এবং ভিউ কল করা।
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 একটি কাস্টম মিডলওয়্যার, যা রিকোয়েস্ট পিপলাইনে যোগ করা হয়েছে।


Custom Middleware তৈরি

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 প্যাটার্নের ভিত্তিতে রিকোয়েস্ট কন্ট্রোলার এবং অ্যাকশন মেথডে পাঠায়, এবং মিডলওয়্যার পিপলাইন রিকোয়েস্ট এবং রেসপন্স প্রক্রিয়া করে। কাস্টম মিডলওয়্যার তৈরি এবং রাউটিং কনফিগারেশনের মাধ্যমে আপনি অ্যাপ্লিকেশনকে আরও দক্ষ এবং সুনির্দিষ্টভাবে নিয়ন্ত্রণ করতে পারবেন।

common.content_added_by

Dependency Injection ব্যবহার

240
240

Dependency Injection (DI) একটি ডিজাইন প্যাটার্ন, যা অ্যাপ্লিকেশনগুলিতে ক্লাসের মধ্যে নির্ভরতা (dependencies) ইনজেক্ট করার একটি পদ্ধতি। এর মাধ্যমে কোডে নমনীয়তা, টেস্টেবিলিটি এবং রিইউজেবিলিটি বৃদ্ধি পায়। .NET CoreDependency Injection ব্যবহারের জন্য একটি বিল্ট-ইন সুবিধা রয়েছে, যা ডেভেলপারদের কমপ্লেক্স ডিপেনডেন্সি ম্যানেজমেন্টে সহায়তা করে।


Dependency Injection কী?

Dependency Injection মূলত একটি কৌশল, যা ম্যানুয়ালি নির্ভরতা (dependency) তৈরি করার বদলে স্বয়ংক্রিয়ভাবে তা ক্লাসে ইনজেক্ট করে দেয়। উদাহরণস্বরূপ, যদি কোনো ক্লাস অন্য একটি ক্লাসের উপর নির্ভরশীল হয়, তাহলে DI ওই নির্ভরশীল ক্লাসটি সেই ক্লাসে ইনজেক্ট করে দেয়, যার ফলে কোডটি আরও পরিষ্কার ও পরিচালনাযোগ্য হয়। DI ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন কম্পোনেন্টগুলোর মধ্যে কম সম্পর্ক (loose coupling) স্থাপন করা হয়।


Dependency Injection এর ধরণ

.NET Core এ তিন ধরনের Dependency Injection রয়েছে:

  1. Transient: এই ধরনের সার্ভিসটি প্রত্যেকটি অনুরোধে নতুনভাবে তৈরি হয়। যদি একটি ক্লাসে Transient সার্ভিস ইনজেক্ট করা হয়, তবে প্রত্যেকবার যখন ওই ক্লাসটি ব্যবহার করা হবে, নতুন একটি ইনস্ট্যান্স তৈরি হবে। সাধারণত, ছোট, অবস্থা-নির্ভর সার্ভিসগুলির জন্য এটি ব্যবহৃত হয়।
  2. Scoped: Scoped সার্ভিসগুলি প্রতি HTTP রিকোয়েস্টে একটি ইনস্ট্যান্স তৈরি করে। এটি সাধারণত ওয়েব অ্যাপ্লিকেশনের জন্য উপযুক্ত যেখানে এক রিকোয়েস্টের মধ্যে একাধিক ক্লাস একই ইনস্ট্যান্স ব্যবহার করে।
  3. Singleton: এই সার্ভিস একবার তৈরি হলে তা পুরো অ্যাপ্লিকেশনজুড়ে একটি ইনস্ট্যান্স হিসেবে রয়ে যায়। এর মানে হলো, সার্ভিসটির একটি মাত্র ইনস্ট্যান্স থাকবে, যা পুরো লাইফটাইমে ব্যবহার হবে।

.NET Core এ Dependency Injection কিভাবে ব্যবহার করবেন?

.NET Core এ DI ব্যবহারের জন্য আপনাকে Startup.cs ফাইলের ConfigureServices মেথডে সার্ভিস রেজিস্টার করতে হয়। এখানে একটি সাধারণ উদাহরণ দেওয়া হলো:


উদাহরণ

ধরা যাক, আমাদের একটি IEmailService ইন্টারফেস এবং তার একটি ইমপ্লিমেন্টেশন EmailService আছে, এবং আমরা এই সার্ভিসটিকে ক্লাসে ইনজেক্ট করতে চাই।

  1. প্রথমে, একটি ইন্টারফেস তৈরি করুন:
public interface IEmailService
{
    void SendEmail(string to, string subject, string body);
}
  1. তারপরে, এর একটি ইমপ্লিমেন্টেশন তৈরি করুন:
public class EmailService : IEmailService
{
    public void SendEmail(string to, string subject, string body)
    {
        // ইমেইল পাঠানোর কোড
        Console.WriteLine($"Email sent to {to} with subject {subject}");
    }
}
  1. এখন, Startup.cs ফাইলে Dependency Injection রেজিস্টার করুন:
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Dependency Injection রেজিস্টার করা হচ্ছে
        services.AddScoped<IEmailService, EmailService>(); // Scoped ইনজেকশন
    }
}
  1. পরবর্তীতে, যেকোনো ক্লাসে 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 ক্লাসের একটি ইনস্ট্যান্স তৈরি করবে এবং কন্ট্রোলারে ইনজেক্ট করবে।


Dependency Injection এর সুবিধা

  1. Loose Coupling: DI ব্যবহারের মাধ্যমে ক্লাসের মধ্যে নির্ভরশীলতা কমিয়ে আনা যায়, যার ফলে কোডটি সহজে পরবর্তী সময়ে পরিবর্তন করা যায়। এতে কোডে আরও নমনীয়তা আনা সম্ভব হয়।
  2. টেস্টেবিলিটি বৃদ্ধি: DI-কে একসাথে ব্যবহার করলে সহজেই ইউনিট টেস্টিং করা সম্ভব। কারণ আপনি Mock অবজেক্ট তৈরি করে আসল ডিপেনডেন্সির পরিবর্তে টেস্ট ডিপেনডেন্সি ব্যবহার করতে পারেন।
  3. কোড রিইউজেবিলিটি: বিভিন্ন ক্লাসে একই ডিপেনডেন্সি ইনজেক্ট করতে পারলে কোডের পুনরায় ব্যবহারযোগ্যতা বৃদ্ধি পায়। একাধিক ক্লাসের মধ্যে সাধারণ সার্ভিসগুলো পুনরায় ব্যবহার করা সম্ভব হয়।
  4. সহজ কনফিগারেশন: একবার DI কনফিগার করার পর, পরবর্তী সময়ে সার্ভিসগুলো ব্যবহারের ক্ষেত্রে কোনো পরিবর্তন করতে হয় না, সেগুলো স্বয়ংক্রিয়ভাবে ইনজেক্ট হয়ে যাবে।
  5. এনভায়রনমেন্ট কনফিগারেশন: আপনি সার্ভিসগুলো বিভিন্ন কনফিগারেশনে রেজিস্টার করতে পারেন (যেমন: Development, Production), যার ফলে পরিবেশ অনুযায়ী কোডের আচরণ নিয়ন্ত্রণ করা সম্ভব হয়।

সারাংশ

Dependency Injection একটি শক্তিশালী ডিজাইন প্যাটার্ন যা .NET Core এ কোডের নমনীয়তা, টেস্টেবিলিটি এবং রিইউজেবিলিটি বাড়ায়। এটি অ্যাপ্লিকেশনে কমপ্লেক্স নির্ভরশীলতা ম্যানেজমেন্টে সাহায্য করে, এবং অ্যাপ্লিকেশনগুলির মধ্যে লুজ কাপলিং নিশ্চিত করে। .NET Core এর বিল্ট-ইন DI কনটেইনারের মাধ্যমে ডেভেলপাররা সহজে তাদের ডিপেনডেন্সি ইনজেক্ট করতে পারেন, যা অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও কার্যকর ও টেস্ট-ফ্রেন্ডলি করে তোলে।


common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion