ASP.NET Core ওয়েব অ্যাপ্লিকেশন আসলে একটি কনসোল প্রজেক্ট যা Program ক্লাসের এন্ট্রি পয়েন্ট public static void Main() থেকে এক্সিকিউশন শুরু করে, যেখানে ওয়েব অ্যাপ্লিকেশনের জন্য হোস্ট তৈরি করা হয়।
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
WebHost হলো একটি স্ট্যাটিক ক্লাস যা IWebHost এবং IWebHostBuilder ইনস্ট্যান্স তৈরি করতে ব্যবহৃত হয় প্রি-কনফিগার্ড ডিফল্টসহ।
CreateDefaultBuilder() মেথড WebHostBuilder-এর নতুন ইনস্ট্যান্স তৈরি করে প্রি-কনফিগার্ড ডিফল্টসহ। ইন্টারন্যালি এটি কনফিগার করে:
- কন্টেন্ট রুট করেন্ট ডিরেক্টরি সেট করে
- কমান্ড লাইন আর্গস কনফিগারেশন অবজেক্টে পাস করতে দেয়
appsettings.jsonএবংappsettings.{Environment}.jsonলোড করে কনফিগারেশনে- এনভায়রনমেন্ট ভেরিয়েবল কনফিগারেশনে যোগ করে
- ডেভেলপমেন্ট মোডে সিক্রেটস লোড করতে দেয়
- কনসোল/ডিবাগ লগার যোগ করে
- Kestrel ব্যবহার করতে বলে এবং লোডেড কনফিগ থেকে Kestrel কনফিগারেশন লোড করে
- রাউটিং যোগ করে
- IIS ইন্টিগ্রেশন যোগ করে
IIS-এ হোস্ট করার জন্য UseIISIntegration() মেথড যোগ করতে হয় (IIS এক্সটার্নাল ওয়েব সার্ভার হিসেবে কাজ করবে)।
UseStartup<Startup>() মেথড ওয়েব হোস্ট দ্বারা ব্যবহৃত Startup ক্লাস স্পেসিফাই করে (কাস্টম ক্লাসও ব্যবহার করা যায়)।
Build() মেথড IWebHost ইনস্ট্যান্স রিটার্ন করে এবং Run() ওয়েব অ্যাপ্লিকেশন শুরু করে যতক্ষণ না বন্ধ হয়।
নোট: .NET 6+ এ মিনিমাল API-তে Program.cs-এই সকল কনফিগারেশন (Services, Middleware, Endpoints) থাকে, Startup.cs আলাদা নেই।