Как выстроить «чистую» Onion-архитектуру ASP.NET приложения?
==============================================================

 Привет, Хабр! Сейчас активно пишу небольшой проект(интернет магазин книг) на ASP.NET MVC(.NET Framework). В качестве архитектуры выбрал Onion. Понимаю, что трёхслойная, возможно, лучше, но хочется изучить именно этот способ организации проекта. Итак, в "сердцевине" у меня находятся Domain Models, это понятно.Затем на уровне Domain Services у меня находятся интерфейсы IRepository и IAsyncRepository, тут тоже всё понятно. Дальше у меня начались проблемы....На уровне ApplicationServices у меня находятся классы, имплементирующие интерфейсы IRepository и IAsyncReository, там же находится DbContext(в качестве ORM использую EF6).Вопросы: правильно ли конкретные классы-репозитории помещать в слой сервисов приложения?Или лучше оставить их на уровне сервисов домена?Просто на разных ресурсах/диаграммах по разному. И еще один момент: в сердце приложения у меня есть класс OrderedProduct и класс Cart, в котором у меня прописана логика добавления нового продукта в корзину. Правильно ли эти классы оставлять в слое доменных моделей, потому что это предметная область, с другой стороны тут уже какая-никакая логика(которая в дальнейшем будет изменяться/расширяться) и это уже сервис приложения?  

  

P.S. Понимаю, что деление на уровне в архитектурах ПО весьма условное, можно по-разному реализовать...Но хочется, всё таки, узнать мнение у людей, которые с этим сталкивались и узнать их мнение, чтобы в дальнейшем не пришлось рефакторить весь проект полностью.Спасибо за внимание. 

[Здесь](https://metanit.com/sharp/mvc5/23.1.php) всё описано.