الفرق بين 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. في أي سيناريوهات يجب استخدام