Я создаю архитектуру решения в ASP.NET Core.
Я ссылаюсь на репозитории в веб-проекте для объявления внедрения зависимостей в ConfigureServices(), вам это подходит?
Я думаю, что идеальным вариантом была бы ссылка только на проект служб, потому что контроллеры должны использовать только службы, но не репозитории.
У меня есть такие проекты:
Веб-приложение (ASP.NET Core) - ссылка на все проекты.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddTransient<IEventsService, EventsService>();
services.AddTransient<IEventsRepository, EventsSqlRepository>();
}
public class EventsController : Controller
{
private readonly IEventsService _eventsService;
public EventsController(IEventsService eventsService)
{
_eventsService = eventsService;
}
}
Business (библиотека классов - стандарт .NET)
Folder IServices
IEventsService
Folder Services
public class EventsService : IEventsService
{
private readonly IEventsRepository _eventsRepository;
public EventsService(IEventsRepository eventsRepository)
{
_eventsRepository = eventsRepository;
}
}
IRepository (библиотека классов - .NET Standard)
Репозиторий (библиотека классов - .NET Standard)
Доступ к BD с помощью E.F.
public class EventsSqlRepository : BaseRepository, IEventsRepository
{
}
Utils (библиотека классов - .NET Standard)
Сущности (библиотека классов - .NET Standard)
Спасибо большое !





Ваше решение выглядит нормально. Часть, в которой регистрируются зависимости приложения, называется корнем композиции, и это единственное место в вашем приложении, где должны быть зарегистрированы все ваши зависимости. Несмотря на то, что он физически размещен в части веб-проекта вашего приложения, логически это отдельная часть вашего приложения. Подробнее об этом можно прочитать здесь: http://blog.ploeh.dk/2011/07/28/CompositionRoot/
Вы придумали, как это разместить? Я работаю над подобной архитектурой.