Уровень домена + Уровень репозитория с вопросом asp.net mvc - PullRequest
0 голосов
/ 16 января 2011

Просто быстрый вопрос о моем уровне домена / доменной службе ... Должен ли я разрешить этому уровню иметь доступ только для чтения к базе данных? то есть подключить IReadOnlySession и разрешить только уровню репозитория иметь доступ к CRUD, т.е. постоянство? Или должен ли уровень репозитория выполнять операции ReadOnly и CRUD, а уровень обслуживания выполняет вызов уровню репозитория?

Одна вещь, которую я нахожу довольно странной, заключается в том, что большую часть времени Сервисный уровень делает только прямой вызов Repo, поэтому возникает вопрос - переместить ReadOnly на Сервисный уровень домена.

EDIT:

Я решил, что в моем приложении должно быть 3 слоя (для всех, кто интересуется тем, что я сделал), первый уровень - это WebUI (всего у меня будет 3, бизнес-требование), ниже - Доменная служба. т. е. все бизнес-правила, проверка, проверка, может ли пользователь выполнить действие x, пользователь - действительный пользователь, вызывающий хранилище данных. Последний уровень - это уровень репозитория, то есть уровень, который сам взаимодействует с базой данных, я использую LinqToSql, вся моя логика CRUD и ReadOnly находится здесь. В качестве примечания я создал еще один проект под названием Model, это фактические сущности модели LinqToSql, то есть Product, Item, Shop, Customer и т. Д. На этот самый проект ссылаются пользовательский интерфейс, Domain Service и Repo, спасая меня от написания DTO и от Надеюсь, ненужная сложность.

Ответы [ 2 ]

2 голосов
/ 16 января 2011

В вашем приложении только один «слой» должен взаимодействовать с базой данных.

В шаблоне Repository это Repository.

Не имеет значения, CRUD или ReadOnly,он должен пройти через хранилище в базу данных.

0 голосов
/ 16 января 2011

Я рассматриваю обсуждение как обязанности этих слоев. Хранилище явно для обеспечения абстракции над БД. Выполнено правильно, и пользователи хранилища не могут определить, используете ли вы SQL-сервер, mysql или файлы для сохранения. Этот слой должен иметь все необходимые операции.

Сервисный уровень - это еще одна абстракция. Это может зависеть от хранилища для сохранения. Обычно здесь немного больше бизнес-логики. Возможно, проблемы с хранилищем данных или другой поток данных (например, gps).

Некоторые приложения не нуждаются в служебном слое. Не добавляйте его, пока он вам не понадобится. Если вам нужен сервисный слой, то пусть он будет тонким рэпером вокруг репо, предоставляя возможность чтения / записи, у ваших моделей будет только одна прямая зависимость.

...