Sto scavando su come strutturare i progetti e quindi inciampo in Onion Architecture. Per quanto riguarda il modo in cui lo capisco, è più su un'architettura basata su domini invece che su un tipo guidato da database.
Sto cercando alcuni progetti github per studiare e saperne di più sull'architettura, quindi ho trovato questo collegamento
Ho difficoltà a comprendere:
namespace Domain.Interfaces
{
public interface IUserRepository
{
IEnumerable<User> GetUsers();
}
}
namespace Services.Interfaces
{
public interface IUserService
{
IEnumerable<User> GetUsers();
}
}
namespace Services
{
public class UserService : IUserService
{
private readonly IUserRepository _repository;
public UserService(IUserRepository repository)
{
_repository = repository;
}
public IEnumerable<User> GetUsers()
{
return _repository.GetUsers();
}
}
}
Il modo in cui lo usa è tramite l'iniezione del costruttore.
private readonly IUserService _service;
public HomeController(IUserService service)
{
_service = service;
}
-
Esponi sempre un servizio come
IUserService
a un'app che lo consuma? Ma ho notato cheIUserRepository
ha gli stessi metodi perIUserService
? -
Se si dice che Infrastructure è preoccupante, significa o coinvolge il database? O non necessariamente? in caso contrario, quali sono gli esempi di problemi infrastrutturali?
P.S. Mentre sto imparando l'architettura della cipolla, sempre, se non sempre, almeno menziona il DDD. Quindi immagino che imparerò anche DDD:)