Avatar ·

الفرق بين AddTransient و AddScoped و AddSingleton في ASP.NET Core: متى وماذا تستخدم؟

مرحبًا بالجميع! لقد بدأت مؤخرًا في تعلم ASP.NET Core وآلية حقن التبعية (DI) المدمجة. يبدو أنني فهمت تسجيل الخدمات في `ConfigureServices`، لكن اختيار عمر الخدمة يربكني. لدي مثال بسيط. لنفترض أنني أكتب تطبيقًا لمتجر إلكتروني، ولدي خدمة `CartService` تدير سلة المستخدم، و `LoggerService` تسجل الإجراءات. في بدء التشغيل، أسجلها كالتالي: ```csharp public void ConfigureServices(IServiceCollection services) { services.AddTransient(); services.AddScoped(); services.AddSingleton(); } ``` لا أفهم تمامًا الفرق بين `AddTransient` و `AddScoped` و `AddSingleton`. هناك الكثير من الشروحات على الإنترنت، لكنها غالبًا ما تكون مجردة جدًا. أسئلتي: 1. ماذا يحدث إذا أخطأت في اختيار عمر الخدمة؟ على سبيل المثال، إذا سجلت خدمة للعمل مع قاعدة البيانات كـ Singleton؟ 2. في أي سيناريوهات يجب استخدام