|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
kmaw, Как раз описанный Вами вариант репозитория инкапсилирует логику доступа к БД (я потому и задал уточняющий вопрос, т.к. не понял, как DTO вписывается в репозиторий), все join-ы(или include-ы) делаются в датасервисе. С EF действительно все описание репозитория укладывается в ~60 строчек, но попробуйте написать репозиторий хотя бы для ADO.NET ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 15:29 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
hVosttможно легко подменить способ хранения данных для такого репо это сделать не получится легко ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 15:34 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
hVosttтакой репозиторий можно замокать для тестов мой вариант тоже без проблем мокается ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 15:36 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
hVosttзачем в него какую-то логику ещё пихать? джоины и decode-логику куда пихать? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 15:37 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
hVosttразные части ПО могут требовать сотни разных не связанных DTO это сильно абстрактно. если что-то эдакое потребуется, может вообще потребоваться много чего переписать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 15:38 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
blestвсе join-ы(или include-ы) делаются в датасервисе я не испытываю прям органической неприязни к такому варианту, но тут, на мой взгляд, теряется сама надобность репозитория. тогда сам ОРМ можно считать репозиторием. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 15:41 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
все-равно, как не крути, есть "доменная логика". и в сервис её нормально не впихнешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 15:43 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
blestвсе join-ы(или include-ы) делаются в датасервисе т.е. вариант с реализацией на нативном SQL отпадает ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 15:45 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
blestС EF ... для ADO.NET в ADO.NET нет Entity. там есть только SQL и DTO. и там, наверное много логики в БД. но если надо феншуй - то легко: репо работают с DTO ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 16:03 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
kmawblestС EF ... для ADO.NET в ADO.NET нет Entity. там есть только SQL и DTO. и там, наверное много логики в БД. но если надо феншуй - то легко: репо работают с DTO а захочется NHibernate - тоже без проблем, из датасервиса не надо будет выпиливать всякие останки от контекста, которые туда вместе с "все join-ы(или include-ы) делаются в датасервисе". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 16:07 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
kmawkmawпропущено... в ADO.NET нет Entity. там есть только SQL и DTO. и там, наверное много логики в БД. но если надо феншуй - то легко: репо работают с DTO а захочется NHibernate - тоже без проблем, из датасервиса не надо будет выпиливать всякие останки от контекста, которые туда вместе с "все join-ы(или include-ы) делаются в датасервисе". хотя не пробовал, там с транзакциями наверное так сразу не получится ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 16:09 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
kmawдля такого репо это сделать не получится легко серебряной пули не существует. но можешь поверить мне на слово, я подобный репо переводил с NHibernate на EF, и благодаря тому, что все обращения к БД делались исключительно через репо, а не через ISession, я это сделал за 1 день, при количестве Entity 100+ kmawмой вариант тоже без проблем мокается не правда, ты в репо инкапсулируешь кроме работу с Entity ещё и работу с DTO, так что не получится замокать только хранилище (например, подменить EF или NH на коллекции в памяти), не трогая ни один байт кода, работающий с DTO. kmawджоины и decode-логику куда пихать? в дата-сервисы. а если точнее, в механику проекций. ты как DTO из Entity получаешь? я исключительно 100% проекциями, и никак иначе. kmawэто сильно абстрактно. если что-то эдакое потребуется, может вообще потребоваться много чего переписать достаточно того, что это абстрактно, а что касается «эдакого» — это можно о чём угодно сказать. kmawвсе-равно, как не крути, есть "доменная логика". и в сервис её нормально не впихнешь. ты говоришь о анемичной модели (дата-сервисы, DTO), и о доменной логике в таком случае говорить не приходится. логику ты можешь пихнуть хоть в сервисы, хоть уровнем выше, но суть в том, что ты работаешь с кортежами данных. никакой доменной моделью тут даже и не пахнет (если брать картинки, которые в начале топике опубликованы). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:04 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
blestно попробуйте написать репозиторий хотя бы для ADO.NETА что в этом сложного? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:05 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
skyANAblestно попробуйте написать репозиторий хотя бы для ADO.NETА что в этом сложного? надо будет состряпать ORM. чтобы сильно не возится, можно дёрнуть исходники EF или NH ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:06 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
DTO, Entity... Да у вас, парни, EF головного мозга :) Репозиторий может внутри себя использовать стратегию доступа к стороннему сервису, или даже сотне сервисов с разным API и форматом возвращаемых данных. Вот и подумайте, где у вас DTO, а где Entity :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:10 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
hVosttне правда, ты в репо инкапсулируешь кроме работу с Entity ещё и работу с DTO, так что не получится замокать только хранилище (например, подменить EF или NH на коллекции в памяти), не трогая ни один байт кода, работающий с DTO Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:11 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
hVosttskyANAпропущено... А что в этом сложного? надо будет состряпать ORM. чтобы сильно не возится, можно дёрнуть исходники EF или NH Чтобы сильно не возиться можно тупо IDataRecord в то, что тебе нужно отобразить. Для репозитория с тремя методами Add, Get и GetAll этого будет достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:14 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:14 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
skyANAhVosttпропущено... надо будет состряпать ORM. чтобы сильно не возится, можно дёрнуть исходники EF или NH Чтобы сильно не возиться можно тупо IDataRecord в то, что тебе нужно отобразить. Для репозитория с тремя методами Add, Get и GetAll этого будет достаточно. Да, IDataReader будет достаточно, просто это уже не 60 строчек кода будет. Я к тому, что репозиторий на то и нужен, чтобы именно эту реализацию доступа к БД в себе и заключать и ничего лишнего имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:22 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
skyANAможно тупо IDataRecord в то, что тебе нужно отобразить в DTO ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:24 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
kmaw Код: c# 1.
Очень похоже на команду, а не на DTO. И сервис, получается, хранит весь бизнес. kmaw Код: c# 1.
Эмм... как я и говорил, ты не можешь замокать хранилище, ты мокаешь фабрику DTO, и это вообще не имеет никакого отношения к хранилищу. Вообще. С нормальным репо, я могу сделать один мок на всё хранилище, а дальше уже тестировать сервисы, тестировать проекции и прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:27 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
skyANAЧтобы сильно не возиться можно тупо IDataRecord в то, что тебе нужно отобразить. Для репозитория с тремя методами Add, Get и GetAll этого будет достаточно. Тогды прощай навигации )) ну да, в принципе можно, и это будет не много кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:28 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
skyANADTO, Entity... Да у вас, парни, EF головного мозга :) Репозиторий может внутри себя использовать стратегию доступа к стороннему сервису, или даже сотне сервисов с разным API и форматом возвращаемых данных. Вот и подумайте, где у вас DTO, а где Entity :) Я об этом и говорю. Репо это по факту «ДАЙ-ПОЛОЖИ». Откуда он чего берёт и куда кладёт, нам фиолетово. Часть сущностей может лежать в SQL, часть в монго, часть вообще через веб-сервисы. И нам всё равно это всё фиолетово. Просто под DTO понимаются кортежи данных, нужных бизнесу. Типа мне надо на форму вывести 10 полей, или в грид собрать кортежи по 10 полей, нафига мне не упало всё остальное, для этого используются DTO. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:29 |
|
Архитектура приложения, надо ли дублировать сущности под каждый слой
|
|||
---|---|---|---|
#18+
kmawskyANAможно тупо IDataRecord в то, что тебе нужно отобразить в DTOЕсли Вам надо в DTO, отображайте в DTO :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2015, 17:30 |
|
|
start [/forum/topic.php?fid=20&msg=39085847&tid=1401094]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 441ms |
0 / 0 |