সব ASP.NET Core অ্যাপ্লিকেশনের একটি WebHost অবজেক্ট দরকার যা অ্যাপ্লিকেশন এবং ওয়েব সার্ভার হিসেবে কাজ করে। WebHostBuilder দিয়ে WebHost কনফিগার ও তৈরি করা হয়। সাধারণত UseKestrel() এবং UseIISIntegration() সেটআপ কোডে দেখা যায়।
এগুলো কী করে?
- UseKestrel(): Kestrel কে
IServerইন্টারফেস রেজিস্টার করে যেটি আপনার অ্যাপ্লিকেশন হোস্ট করবে। ভবিষ্যতে অন্যান্য অপশন থাকতে পারে (যেমন Windows-ওনلی WebListener)। - UseIISIntegration(): ASP.NET-কে বলে যে IIS কেস্ট্রেলের সামনে রিভার্স প্রอก্সি হিসেবে কাজ করবে। এটি কিছু সেটিংস স্পেসিফাই করে—যেমন Kestrel কোন পোর্টে লিসেন করবে, ফরোয়ার্ডিং হেডার্স, এবং অন্যান্য ডিটেইলস।
উদাহরণ
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
ASP.NET Core 2.2 পর্যন্ত (Out-of-Process Hosting):
- দুই প্রসেস:
w3wp.exe(IIS) এবংdotnet.exe(ASP.NET Core + Kestrel)। - IIS এবং Kestrel এই দুটি প্রসেসের মাঝপথে কমিউনিকেট করে।
- এই সিনেরিওতে
UseIISIntegrationব্যবহার করা হয়।
ASP.NET Core 3.0+ (In-Process Hosting): ডিফল্টরূপে ইন-প্রসেস হোস্টিং (IIS HTTP সার্ভার - IISHttpServer) ব্যবহার হয়, যেখানে Kestrel ব্যবহার হয় না। UseIISIntegration এখনো কাজ করে কিন্তু ইন-প্রসেসের জন্য কিছু সেটিংস হ্যান্ডেল করে।