Советы, упрощающие мою архитектуру ... asp.net mvc - PullRequest
2 голосов
/ 01 июля 2011

В настоящее время у меня есть уровень 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, я пытаюсь взять лучшее и заставить его работать, я думаю, это было моей проблемой ...

1 Ответ

0 голосов
/ 01 июля 2011

Отслеживание грузовика Боба Крэйвенса - это хорошая серия постов, которую вы можете прочитать, чтобы вы подумали об этом:

http://blog.bobcravens.com/2011/05/a-net-generic-repository-pattern-with-implementations/

В общем, я не считаю хорошей идеей иметь взаимозависимые сервисы, если вы можете их избежать. Если вам нужно это сделать, подумайте об использовании структуры внедрения зависимостей, такой как unity или spring.net или ninject.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...