ASP.NET Core-এ Startup.cs-এ ডিপেন্ডেন্সি রেজিস্টার করার তিনটি উপায়: AddSingleton, AddScoped, AddTransient।
AddSingleton
- পুরো অ্যাপ্লিকেশনে এবং প্রতিটি রিকোয়েস্টের জন্য একটি মাত্র ইনস্ট্যান্স তৈরি হয়।
- স্ট্যাটিক অবজেক্টের মতো আচরণ করে।
- প্রথম রিকোয়েস্টে ইনস্ট্যান্স তৈরি হয় এবং সেটি সমস্ত পরবর্তী রিকোয়েস্টে শেয়ার করা হয়।
services.AddSingleton<ILog, Logger>();
AddScoped
- প্রতি HTTP রিকোয়েস্টের জন্য একটি ইনস্ট্যান্স তৈরি হয়।
- নতুন রিকোয়েস্ট এলে নতুন ইনস্ট্যান্স তৈরি হয়।
- একই রিকোয়েস্টের মধ্যে সব জায়গায় একই ইনস্ট্যান্স শেয়ার হয়।
services.AddScoped<ILog, Logger>();
AddTransient
- প্রতিবার ইনজেকশন রিকোয়েস্টে নতুন ইনস্ট্যান্স তৈরি হয়।
- প্রতি সার্ভিস/কন্ট্রোলার/রিকোয়েস্ট/ইউজারের জন্য আলাদা ইনস্ট্যান্স।
services.AddTransient<ILog, Logger>();
তুলনামূলক টেবিল
| প্যারামিটার | AddSingleton | AddScoped | AddTransient |
|---|---|---|---|
| ইনস্ট্যান্স | প্রতিটি রিকোয়েস্ট/ইউজারের জন্য একই | প্রতি রিকোয়েস্ট এক | প্রতিবার আলাদা |
| ডিসপোজ | অ্যাপ শাটডাউন টাইম | রিকোয়েস্ট শেষে | রিকোয়েস্ট শেষে |
| ব্যবহার | সিঙ্গলটন ইমপ্লিমেন্টেশন দরকার হলে | ইউজার-প্রতি ভিন্ন বিহেভিয়ার | লাইটওয়েট, স্টেটলেস সার্ভিস |
সারসংক্ষেপ: স্টেটফুল সার্ভিসের জন্য Scoped, স্টেটলেস/লাইটওয়েটের জন্য Transient, শেয়ার্ড স্টেট/ক্যাশের জন্য Singleton।