|
Repository & Service
|
|||
---|---|---|---|
#18+
Господа, извеняюсь за нубские вопросы... но Вот в интернетах пишут что репозитории занимаются тем что общаются с базой данных А в Сервисах находиться бизнес логика. Далее показывают пример (можно увидеть ниже). Это только у меня ощущение что бизнес логика в этом примере в репозитории? Зачем вообще слой Service? Такое ощущение что вместо сервиса можно использовать сразу репозиторий в клиенте. Прокоментируйте пожалуйста... Repository Код: c# 1. 2. 3. 4. 5. 6.
Service Код: c# 1. 2. 3. 4. 5.
Client Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 15:45 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
пример очень не показательный. наверняка, при сохранении удалении будет куча проверок - вот они и есть "бизнес-логика" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 15:57 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
причем в методах сервиса будет использоваться много репозиториев, код многих будет выполняться в транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 16:01 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
но даже в таком виде профит имеется - можно тестировать ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 16:02 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GЗачем вообще слой Service? Такое ощущение что вместо сервиса можно использовать сразу репозиторий в клиенте.Ощущение правильное, потому что в качестве репозитория выступает DbContext. авторПаттерн Repository посредничает между слоем области определения и слоем распределения данных, работая, как обычная колекция объектов области определения. Объекты-клиенты создают описание запроса декларативно и направляют их к объекту-репозиторию (Repository) для обработки. Объекты могут быть добавлены или удалены из репозитория, как будто они формируют простую коллекцию объектов . А код распределения данных, скрытый в объекте Repository, позаботится о соответсвующих операциях в незаметно для разработчика. В двух словах, паттерн Repository инкапсулирует объекты, представленыые в хранилище данных и операции, производимые над ними, предоставляя более объектно-ориентированное представление реальных данных . ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 16:08 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Владимир Путин-Ленинно даже в таком виде профит имеется - можно тестироватьЕсть и другие способы организовать тестирование: банально, подключить тесты к тестовой БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 16:12 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
ммм, вот всегда так ) Владимир Путин-Ленин говорит что так и надо и это "классика" )) а Алексей К говорит что ну их нах Сервисы можно в клиент репозитории... PS Ок понял что в сервисах проверки на нуль и прочии проверки... А это не размазывает логику между Сервисом и Репозиторием? Или нужно просто для себя запомнить что все условия для запросов находятся в репозитории? Вот как использовать 2 и более репозиториев в сервисе не вижу для себя задачи ... можете привести какой нибудь пример? (не код, на словах) для того, чтобы понимать о чем речь. PSS транзакции в коде пока не реализовал, но планирую ... нужно будет показать что в итоге получиться Спасибо за Вашу помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 16:36 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем Gа Алексей К говорит что ну их нах Сервисы можно в клиент репозитории...Я не это имел ввиду. :-) Я лишь обратил внимание на то, что под классическое определение понятия "паттерн репозитарий" попадает DbContext. А какие слои организовывать и как распределять между ними логику - это личное дело каждого, в зависимости от решаемой задачи и предпочтений. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 16:43 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Алексей КАртем Gа Алексей К говорит что ну их нах Сервисы можно в клиент репозитории...Я не это имел ввиду. :-) Ок, понял. Если что извеняюсь ... я утрировал ... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 18:18 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
в примере видно что в Repository есть класс Category из слоя Domain вопрос: в слое Service должен быть отдельно созданый класс Category или используется класс из слоя Domain ? Я "продублировал" класс Category в Service и воспользовался AutoMapper ом ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:02 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Алексей КВладимир Путин-Ленинно даже в таком виде профит имеется - можно тестироватьЕсть и другие способы организовать тестирование: банально, подключить тесты к тестовой БД. И какое покрытие у таких тестов? И сколько по времени они выполняются? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:09 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Алексей Кбанально, подключить тесты к тестовой БД это, конечно, тоже надо. но, что будет тестироваться в итоге, если нет разделения? полный чОрный ящик? это хрень а не тестирование ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:09 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем Gммм, вот всегда так ) Владимир Путин-Ленин говорит что так и надо и это "классика" )) а Алексей К говорит что ну их нах Сервисы можно в клиент репозитории... PS Ок понял что в сервисах проверки на нуль и прочии проверки... А это не размазывает логику между Сервисом и Репозиторием? Или нужно просто для себя запомнить что все условия для запросов находятся в репозитории? Вот как использовать 2 и более репозиториев в сервисе не вижу для себя задачи ... можете привести какой нибудь пример? (не код, на словах) для того, чтобы понимать о чем речь. PSS транзакции в коде пока не реализовал, но планирую ... нужно будет показать что в итоге получиться Спасибо за Вашу помощь. Сервис - это бизнес-логика . Это как если бы Вы что-то делали, делали, проверяли, сверяли, получили результат (вот это сервис)... и на листочек записали (вот это репозиторий). Просто многие пихают первое в контроллеры, а потом задаются вопросом: а чем у нас сервисы от репозиториев-то отличаются? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:13 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GВот как использовать 2 и более репозиториев в сервисе не вижу для себя задачи ну представь, что для выполнения удаления, тебе надо сначала спросить а не "лайка бос" ли объект. а этот запрос делает другой репо. вот и их уже > 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:14 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Владимир Путин-Ленинно даже в таком виде профит имеется - можно тестировать И не только тестировать... Можно прозрачно сменить хранилище, можно прозрачно подключить распределённый кэш, можно прозрачно вынести базу в другую зону в целях безопасности и работать с ней через API... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:17 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GВот как использовать 2 и более репозиториев в сервисе не вижу для себя задачи Ну к примеру пересчитать заказ в другую валюту. Где будете это делать? В контроллере? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:20 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Алексей Ккачестве репозитория выступает DbContext заблуждение, я считаю. это не репо, это ниже: ISession, DbContext, IDbConnection, просто сохранение в файлы... если вообще не стоит задача распределить и тестировать логику, допустим это один сайт, то может и не надо так заморачиваться сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:25 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем G Код: c# 1.
для придирки: локальные переменные и параметры вроде принято с маленькой буквы ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:35 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
skyANAСервис - это бизнес-логика . Это как если бы Вы что-то делали, делали, проверяли, сверяли, получили результат (вот это сервис)... и на листочек записали (вот это репозиторий). Просто многие пихают первое в контроллеры, а потом задаются вопросом: а чем у нас сервисы от репозиториев-то отличаются? :) Сервис - это бизнес логика. Все предельно ясно. Но как доходит до практики начинают возникать вопросы. Как пример: выше я показал репозиторий и сервис. Но то, что написано в репозитории выглядит как бизнес логика, а то, что написано в сервисе выглядит как излишнее... Я начал писать проект и хоть для меня "не понятно" в чем суть сервиса, но решил не отклоняться от рекомендаций. Потому как отклонения череваты ))) ... Иммануил КантАртем G Код: c# 1.
для придирки: локальные переменные и параметры вроде принято с маленькой буквы Да, вы правы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 19:51 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GЯ начал писать проект и хоть для меня "не понятно" в чем суть сервиса, но решил не отклоняться от рекомендаций начни писать тесты. и все станет ясно. слабосвязанная архитектура не для красоты. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 20:02 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GЯ начал писать проект и хоть для меня "не понятно" в чем суть сервиса, но решил не отклоняться от рекомендаций. Потому как отклонения череваты ))) ... Суть сервиса в том, что из него можно дергать данные из разных репозиториев, обрабатывать в соответстии с бизнес логикой и отправлять результаты обратно в репозитории. Это частный пример. Например: Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 20:03 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем Gощущение что бизнес логика в этом примере в репозитории если есть динамика в критериях выборки, то такие репозитории не годятся ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 20:13 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Есть и другие способы организовать тестирование: банально, подключить тесты к тестовой БД. И какое покрытие у таких тестов? И сколько по времени они выполняются? Алексей путает интеграционные тесты с модульными. Смею предположить, что из-за отсутствия опыта в тестировании. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 23:37 |
|
|
start [/forum/topic.php?fid=20&msg=39185187&tid=1400730]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 322ms |
total: | 475ms |
0 / 0 |