|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
Привет! Очередной затык, наткнулся на статью где в комментария произошел холивар на тему, что DAL не нужен если есть EF, т.к. он и есть DAL, вот ссылочка на начало холивара . Решил загуглить и вот нашел статью в которой это разбирается . Хорошо, если отказываться от своих репозиториев (не люблю велосипеды), то куда втыкать Контекст, если я вынес Entities, Enums и Models в отдельный проект? Пока получается такая структура: Проект 1 - Domain Models Layer (DML) • Entities - Сущности БД (Code First) • Enums - Перечисления для всех проектов • Models - Модели представлений (с ними и с Entities работает BLL) Проект 2 - Business Logic Layer (BLL) : связан с DML • Context - Context EF • Services - Сервисы для предоставления и обработки данных, а так же интерфейсы к ним Проект 3 - ASP.NET (WEB) : связан с DML и BLL • Controllers • Views Все ли логично в данной структуре? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 13:27 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
__Pavel__, вообще ни фига не логично :) Domain Model - это предметная область, в ней и существует логика (бизнес логика). Её представление и взаимодейтсвие с ней может быть разным, через разные интерфейсы, которые выделяют в соответсвующий слой. Также в отдельный слой выделяют сохранение данных предметной области. А у вас в Domain Models Layer и сущности БД, и модели представления. Business Logic Layer вообще не понятно, что из себя представляет. Зачем-то там Context EF. BLL должен содержать в себе Domain Model. Проект 3 - это Presentation Layer, в нём должны быть модели представления. Context EF и всё что относится к БД следует разместить в Data Layer. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 13:41 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Да, но нет =) Изначально так и было все, но возникли проблемы, например BLL не имеет ссылку на WEB и поэтому не имеет доступа к Моделям, а значит надо городить еще одни модели на уровне BLL, а потом на уровне WEB их еще раз мапить, это костыль как по мне, вынос Сущностей и Моделей в отдельный проект решает данную проблему сразу и не создает никаких новых. Это опять же не я придумал =) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 13:57 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
BLL ничего не должен знать о моделях представления. А ты сделал распределённый монолит, спагетти ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 13:58 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
Shocker.Pro, а они чем-то отличаются от моделей в BLL, кроме аннотаций? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 14:00 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
В общем-то - да. Сейчас ты скорее всего наделал универсальных моделей, которые работают и на бизнес-логику и на представление. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 14:10 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
уровень презентации зависит от BLL BLL зависит от DAL в обратную сторону не должно быть зависимостей ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 14:12 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
__Pavel__Дмитрий Мух, Да, но нет =) Изначально так и было все, но возникли проблемы, например BLL не имеет ссылку на WEB и поэтому не имеет доступа к Моделям, а значит надо городить еще одни модели на уровне BLL, а потом на уровне WEB их еще раз мапить, это костыль как по мне, вынос Сущностей и Моделей в отдельный проект решает данную проблему сразу и не создает никаких новых. Это опять же не я придумал =) И кто же такое придумал? Да, надо "городить" отдельные сущности предметной области и отображать их на модель представления и БД. И если ты почитаешь про предметно-ориентированное проектирование (DDD), то откроешь для себя как "городить" правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 14:19 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
Shocker.Proуровень презентации зависит от BLL BLL зависит от DAL в обратную сторону не должно быть зависимостей BLL не зависит от DAL на прямую, а используется внедрение зависимостей. То есть BLL знает только об IRepository, реализация которого может вполне себе работать с распределённым кэшем. Ты же не будешь писать, что в этом случае BLL зависит от подситемы кэширования. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 14:26 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
А вот DAL зависит от BLL, потому как надо знать на что отображать (на какие сущности предметной област) данные из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 14:27 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
Дмитрий МухContext EF и всё что относится к БД следует разместить в Data Layer. В простых ситуациях EF и есть Data Layer сам по себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:48 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
Дмитрий МухТо есть BLL знает только об IRepository, реализация которого может вполне себе работать с распределённым кэшем. Ты же не будешь писать, что в этом случае BLL зависит от подситемы кэширования. Собственно DbContext и есть абстракция. Просто чем больше система, тем больше вероятность столкнуться с недостаточной гибкостью DbContext, но в целом он очень даже мощный, и кеш туда можно встроить несколько уровневый, и безопасность, аудит, и много чего. Однако использовать его в таком качестве на перспективу всё равно риск. Зато даёт буст в начале. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:50 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
hVostt, давно не бывал в простых ситуациях, что это? приведи пару примеров ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:50 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
Дмитрий МухhVostt, давно не бывал в простых ситуациях, что это? приведи пару примеров накидать пилота какого-нибудь для начала. или проект для решения задачи на конкретный срок, с конечным жизненным циклом в рамках нескольких месяцев. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:53 |
|
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
|
|||
---|---|---|---|
#18+
Дмитрий Мух, собственно, только для этого лично я им и пользуюсь, в перспективных проектах с условно бесконечным циклом жизни (пока не загнётся компания), брать EF уже не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:54 |
|
|
start [/forum/topic.php?fid=18&msg=39861521&tid=1354904]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
191ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 299ms |
0 / 0 |