В настоящее время у меня есть уровень UI Layer / DomainService (здесь находятся логика домена и сервисы) и Repo Layer для устойчивости, я использую Ninject , чтобы помочь отделить вещи.
Я сохранил свой уровень пользовательского интерфейса очень простым - который делегирует задачи сервисному уровню, однако у меня очень сложное приложение, которое зависит от loggedonuser, поэтому мой CRUD может быть довольно сложным.
Моя проблема заключается в том, что у меня есть служба почти для всего, и она подключается к GenericRepository.
Например
IOrder, который связывается с IDBRepo для получения информации о заказе в зависимости от того, какой клиент получает доступ к заказу, затем у меня IShipping - который также подключается к IDBRepo и удаляет информацию ... он усложняется, когда 1 службе требуется вызвать другую службу, они оба подключены к IDBRepo.
Мне удалось вытащить IUserSession и я могу дать это каждому сервису - но мне все это кажется слишком сложным ...
При настройке теста мне нужно сделать что-то вроде:
var db = new DBRepo();
var s1 = new OrderService(db);
var s2 = new ShippingService(s1,db);
Затем, чтобы расширить некоторые / большинство моих услуг, мне нужно добавить ILoggingService и INotificationService - им обоим тоже нужен доступ к базе данных ...
ПРИМЕЧАНИЕ: я не ищу чистый DDD, я пытаюсь взять лучшее и заставить его работать, я думаю, это было моей проблемой ...