Câu hỏi phỏng vấn .NET Core
Câu hỏi

Explain the IoC (DI) Container service lifetimes?

Câu trả lời

In .NET Core, the IoC (Inversion of Control) container, also known as the Dependency Injection (DI) container, manages the instantiation and lifetime of services. There are three primary service lifetimes available: Transient, Scoped, and Singleton. Each of these lifetimes determines how long a service instance is maintained by the DI container and how it is reused across the application.

Transient

  • Lifetime: Very short.
  • Instantiation: A new instance is created each time the service is requested.
  • State Retention: Does not retain state between different requests.
  • Use Case: Suitable for lightweight, stateless services that do not need to share data or state across different parts of the application. For example, services that generate random numbers or timestamps.
  • Example:
    csharp Copy
    services.AddTransient<IMyService, MyService>();
  • Performance: Typically has higher memory usage due to frequent instantiation but avoids issues related to state retention and multi-threading[1][2][4][5].

Scoped

  • Lifetime: Short, per individual scope or request.
  • Instantiation: A single instance is created and shared within the scope of a single request.
  • State Retention: Retains state within the scope of the request but not across different requests.
  • Use Case: Ideal for services that need to maintain state within a single request, such as database contexts in web applications where the same instance is reused throughout the request.
  • Example:
    csharp Copy
    services.AddScoped<IMyService, MyService>();
  • Performance: Balances memory usage and state retention, making it suitable for scenarios where multiple components within a request need to share data[1][2][4][5].

Singleton

  • Lifetime: Long, for the entire application lifetime.
  • Instantiation: A single instance is created and shared across all requests and throughout the application's lifetime.
  • State Retention: Retains state across the entire application.
  • Use Case: Best for services that need to maintain state or configuration settings that are shared across the entire application, such as logging services or configuration managers.
  • Example:
    csharp Copy
    services.AddSingleton<IMyService, MyService>();
  • Performance: Most memory-efficient in terms of instantiation but requires careful management of state and thread safety to avoi...
middle

middle

Gợi ý câu hỏi phỏng vấn

junior

What's the difference between SDK and Runtime in .NET Core?

senior

What is the difference between CIL and MSIL (IL)?

senior

Why shouldn't I use the Repository Pattern with Entity Framework?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào