Scoped, Transient, এবং Singleton লাইফটাইম

Microsoft Technologies - এএসপি ডট নেট কোর (ASP.Net Core) Dependency Injection (DI) |
244
244

ASP.NET Core-এ Dependency Injection (DI) একটি গুরুত্বপূর্ণ কনসেপ্ট, যা অ্যাপ্লিকেশনের ডিপেনডেন্সি ম্যানেজমেন্ট সহজ করে এবং কোডের পুনরায় ব্যবহারযোগ্যতা বাড়ায়। DI এর মাধ্যমে, আপনি বিভিন্ন সার্ভিস ক্লাসকে একসাথে সংযুক্ত করতে পারেন, যেগুলোর লাইফটাইম ম্যানেজ করা যায়। ASP.NET Core-এ তিনটি প্রধান সার্ভিস লাইফটাইম রয়েছে: Scoped, Transient, এবং Singleton। এগুলোর ব্যবহার অ্যাপ্লিকেশনের কাঠামো এবং পারফরম্যান্সের ওপর প্রভাব ফেলে।


Scoped লাইফটাইম

Scoped লাইফটাইমে একটি সার্ভিস প্রতিটি HTTP রিকোয়েস্ট এর জন্য একবার তৈরি হয় এবং সেই রিকোয়েস্ট চলাকালীন সার্ভিসটি পুনরায় ব্যবহার করা হয়। এই লাইফটাইমটি সাধারণত ডেটাবেস সংযোগ বা অন্য কোনো রিকোয়েস্ট-বেসড সার্ভিসের জন্য ব্যবহার করা হয়।

ব্যবহার

Scoped সার্ভিস শুধুমাত্র একটি নির্দিষ্ট রিকোয়েস্টের মধ্যে জীবিত থাকে এবং যখন রিকোয়েস্ট শেষ হয়ে যায়, তখন এটি ধ্বংস হয়ে যায়। এটি সাধারণত Controller বা Middleware-এর মতো রিকোয়েস্ট ভিত্তিক সার্ভিসে ব্যবহৃত হয়।

উদাহরণ:

public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped<IMyService, MyService>();
}

এখানে, IMyService ইন্টারফেসের একটি ইন্সট্যান্স প্রতিটি HTTP রিকোয়েস্টের জন্য নতুনভাবে তৈরি হবে এবং রিকোয়েস্টের জন্য ব্যবহৃত হবে।


Transient লাইফটাইম

Transient লাইফটাইমে একটি সার্ভিস প্রতিটি Dependency Injection কলের জন্য নতুনভাবে তৈরি হয়। প্রতিবার একটি নতুন ইন্সট্যান্স তৈরি হবে, এবং এটি যতবারই ডিপেনডেন্সি ইনজেক্ট করা হোক না কেন, প্রতিবারই এটি নতুন হবে।

ব্যবহার

Transient সার্ভিসটি সাধারণত ছোট, স্বতন্ত্র এবং পরিবর্তনযোগ্য ডেটা বা কর্মক্ষমতা পরিচালনা করে, যেমন লগিং সার্ভিস, ক্লায়েন্ট-কনফিগার করা সার্ভিস ইত্যাদি।

উদাহরণ:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IMyService, MyService>();
}

এখানে, IMyService প্রতিবার সার্ভিস প্রয়োজন হলে, একেবারে নতুন একটি ইন্সট্যান্স তৈরি হবে। এটি সাধারণত সেই সার্ভিসে ব্যবহার হয়, যেগুলো একটি রিকোয়েস্টের মধ্যে একাধিকবার ব্যবহৃত হতে পারে।


Singleton লাইফটাইম

Singleton লাইফটাইমে একটি সার্ভিস অ্যাপ্লিকেশন শুরু হওয়ার পর থেকে অ্যাপ্লিকেশন চলাকালীন পুরো সময় জুড়ে একবার তৈরি হয় এবং একটি একই ইন্সট্যান্স সকল জায়গায় ব্যবহৃত হয়। এটি সাধারণত সেই সার্ভিসে ব্যবহৃত হয় যেগুলো ডেটা শেয়ার করতে হয় বা দীর্ঘমেয়াদী সংযোগ রাখতে হয়।

ব্যবহার

Singleton সার্ভিসটি দীর্ঘস্থায়ী অবস্থায় থাকে এবং অ্যাপ্লিকেশন চলাকালীন একমাত্র ইন্সট্যান্স ব্যবহৃত হয়, যেমন কনফিগারেশন সার্ভিস, লগিং সার্ভিস বা এমন কোনো সার্ভিস যেটি খুব কম সময়ে বা কখনও নতুনভাবে তৈরি করা প্রয়োজন হয় না।

উদাহরণ:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IMyService, MyService>();
}

এখানে, IMyService কেবল একবার তৈরি হবে এবং অ্যাপ্লিকেশন চলাকালীন পুরো সময় একক ইন্সট্যান্সের মাধ্যমে ব্যবহৃত হবে।


লাইফটাইমের তুলনা

লাইফটাইমসার্ভিসের অবস্থাএক্সটেনশনউপযুক্ত পরিস্থিতি
Scopedরিকোয়েস্ট-ভিত্তিকএক রিকোয়েস্টের মধ্যে একবার তৈরি হয়রিকোয়েস্ট ভিত্তিক ডেটা যেমন ডাটাবেস কানেকশন, ইউজার সেশন
Transientএকবার ব্যবহার হওয়াপ্রতিবার নতুনভাবে তৈরি হয়ছোট, অস্থায়ী সার্ভিস যেমন ডেটা প্রসেসিং, ইউটিলিটি সার্ভিস
Singletonঅ্যাপ্লিকেশন চলাকালীন একটিইঅ্যাপ্লিকেশন চলাকালীন একটাই ইন্সট্যান্সকনফিগারেশন, লগিং, এবং এমন সার্ভিস যা একাধিক জায়গায় শেয়ার করা হয়

কবে কোন লাইফটাইম ব্যবহার করবেন?

  • Scoped: যখন সার্ভিসটি রিকোয়েস্ট ভিত্তিক এবং তার পরে রিসোর্স মুক্তি প্রয়োজন।
  • Transient: যখন সার্ভিসটি দ্রুত এবং স্বতন্ত্রভাবে কাজ করবে এবং এর ইন্সট্যান্স বারবার তৈরি করার কোনও সমস্যা নেই।
  • Singleton: যখন সার্ভিসটি অ্যাপ্লিকেশন চলাকালীন একক অবস্থায় থাকবে এবং দীর্ঘমেয়াদী সংযোগ বা শেয়ারড ডেটা ব্যবস্থাপনা করবে।

সারসংক্ষেপ

ASP.NET Core এর Dependency Injection লাইফটাইম গুলি - Scoped, Transient, এবং Singleton - প্রতিটির নিজস্ব ব্যবহারের ক্ষেত্র রয়েছে। একটি সঠিক লাইফটাইম নির্বাচন করা আপনার অ্যাপ্লিকেশনের পারফরম্যান্স এবং কোডের সুসংগঠনকে শক্তিশালী করতে সহায়ক।

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

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

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

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