Должна ли одна служба вызывать другую службу или напрямую использовать репозиторий?C#

Место общения программистов C#
Ответить
Anonymous
 Должна ли одна служба вызывать другую службу или напрямую использовать репозиторий?

Сообщение Anonymous »

Я изучаю чистую архитектуру и не могу в этом разобраться.

Представьте такой сценарий: у меня есть ServiceA, который вызывает свой репозиторий:

Код: Выделить всё

public class ServiceA : IServiceA
{
private readonly IRepositoryA _repositoryA;

public ServiceA(IRepositoryA repositoryA)
{
_repositoryA = repositoryA;
}

public async Task AddAsync(ObjADTO obj)
{
ObjA entity = obj.Map();
// business logic
await _repositoryA.AddAsync(entity);
}
}

Код: Выделить всё

internal class RepositoryA : IRepositoryA
{
public async Task AddAsync(ObjA obj)
{
// add to database
}
}
Тогда у меня есть другой сервис, ServiceB, которому также необходимо добавить ObjA в базу данных.

Следует ли мне использовать этот сервис (

Код: Выделить всё

ServiceA
) или репозиторий (

Код: Выделить всё

RepositoryA
)?
  • Вызовите репозиторий напрямую:

    Код: Выделить всё

    public class ServiceB : IServiceB
    {
    private readonly IRepositoryA _repositoryA;
    
    public ServiceB(IRepositoryA repositoryA)
    {
    _repositoryA = repositoryA;
    }
    
    public async Task AddAsync(ObjBDTO obj)
    {
    // business logic
    await _repositoryA.AddAsync(entity);
    }
    }
    
  • Вызовите службу:

    Код: Выделить всё

    public class ServiceB : IServiceB
    {
    private readonly IServiceA _serviceA;
    
    public ServiceB(IServiceA serviceA)
    {
    _serviceA = serviceA;
    }
    
    public async Task AddAsync(ObjBDTO obj)
    {
    // business logic
    await _serviceA.AddAsync(entity);
    }
    }
    
Это зависит или есть какие-то рекомендации, которым я должен следовать?


Подробнее здесь: https://stackoverflow.com/questions/798 ... y-directly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»