Dependency Injection (DI) to technika programowania, w której obiekty są dostarczane innym obiektom automatycznie, zamiast tworzyć je samodzielnie. W ASP.NET Core, Dependency Injection jest integralną częścią frameworku i jest szeroko używane w tworzeniu aplikacji webowych, w tym API.
Oto, jak działa Dependency Injection w ASP.NET Core Web API:
Rejestracja Usług:
Pierwszym krokiem jest zarejestrowanie usług (obiektów) w kontenerze DI. Można to zrobić w metodzie ConfigureServices klasy Startup.cs. Przykład rejestracji usługi, która obsługuje operacje na bazie danych:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddScoped<IMyRepository, MyRepository>();
services.AddTransient<IMyService, MyService>();
}
AddDbContext: Rejestruje kontekst bazy danych do zarządzania połączeniem z bazą danych.AddScoped: Tworzy instancję usługi na potrzeby żądania HTTP (jeden obiekt na jedno żądanie).AddTransient: Tworzy nową instancję usługi za każdym razem, gdy jest potrzebna.Wstrzykiwanie Usług:
W kontrolerach lub innych komponentach, które obsługują żądania HTTP, możesz wstrzyknąć zarejestrowane usługi do konstruktora. Na przykład:
[ApiController]
[Route("api/[controller]")]
public class MyController : ControllerBase
{
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
// ...
}
Dzięki wstrzykiwaniu usługi, nie musisz tworzyć obiektu IMyService samodzielnie; ASP.NET Core dostarcza go za Ciebie.
Dostęp do Usług:
Teraz, gdy masz zarejestrowane usługi i wstrzyknięte je do odpowiednich kontrolerów lub komponentów, możesz wywoływać metody tych usług w swoim kodzie. Na przykład, możesz użyć _myService w kontrolerze do pobierania lub modyfikowania danych, obsługi logiki biznesowej itp.
Dependency Injection w ASP.NET Core Web API ma wiele korzyści, takich jak:
Dependency Injection to ważny element projektowania aplikacji w ASP.NET Core Web API, który pomaga zwiększyć elastyczność, testowalność i jakość kodu.
Dependency injection in ASP.NET Core
Dependency Injection for Absolute Beginners with C# and .NET