Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVosttПарамонЭто сложно понять из названия, оно слишком общее. В контексте букинга, сложно придумать другой смысл :) Ну да. Accomodation - это размещение, или проживание. Хотя можно и уточнить: HotelAccomodation (размещение в гостинице). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2017, 18:18 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVosttПарамонЭто сложно понять из названия, оно слишком общее. В контексте букинга, сложно придумать другой смысл :) Пытался понять зачем мне искать название методу, который по сути просто поиск по параметрам. :) bookingService.FindHotels(searchModel) как вариант. Но, как понял передают спецификацию на прямую из контроллера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2017, 20:50 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
Парамон, Твой вариант потребует изменять интерфейс и реализацию сервиса, когда понадобится добавить новое условие. Если условие надо будет изменить или расширить, ты рискуешь сломать вызовы. Спецификации могут находиться в разных сборках и использоваться без изменения или перекомпиляции репозитория. Букинг сервис действительно может выглядеть как ты описал, а он может использовать спецификацию для репозитория. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2017, 21:09 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
Вопросы по спецификации. Такой интерфейс Код: c# 1. 2. 3. 4. предполагает, что эта спецификация будет воткнута до Код: c# 1. а если надо после в виде Код: c# 1. как быть ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 23:22 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
test_taskкак быть ??? Например, так: Код: c# 1. 2. 3. 4. test_taskа если надо после в виде Код: c# 1. Получится так: Код: c# 1. Такая спецификация может не только отфильтровать, но и отсортировать, или сделать подвыбоку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 09:23 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVostttest_taskкак быть ??? Например, так: Код: c# 1. 2. 3. 4. test_taskа если надо после в виде Код: c# 1. Получится так: Код: c# 1. Такая спецификация может не только отфильтровать, но и отсортировать, или сделать подвыбоку. тут Код: c# 1. 2. 3. 4. имеем ограничение Код: c# 1. а фильтровать надо "по анонимному типу" Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 09:40 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
test_task, Спецификации изначально не расположены для работы с анонимными типами, по тому факту, что анонимные типы закрыты в том участке кода, где они используются, а дальше только рефлексией, что уже хуже, чем ADO-шные DataTable/DataSet. Убирай анонимные типы и заменяй на DTO-классы. С ними хотя бы протестировать можно твой код и писать обвязку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 15:28 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
повносил некоторые изменения https://github.com/fiqwenbv/ParrotWings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 18:35 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
test_task, Код: c# 1. У тебя не поймёшь, сделай нормально SaveChanges() это задача UnitOfWork, а не IRepository, сам посмотри какой бардак: ISettingsRepository settingsRepository, IBaseRepository<Account> accountRepository... и IRepository. Если бы сервисы не занимались построением запросов, ты бы убрал их, инкапсулировал в IQuery<TResult> (например Query<AccountDTO>), чтобы в сервисах только была логика, стало бы чище и лучше. А сейчас грязно, понамешано всего в кучу, сам попробуй свой код прочитать отстранённо, очень тяжело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 19:05 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
test_task, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Не особо это улучшает ситуацию, ты возвращаешь живой и ленивый IQueryable от провайдера, потом начинаешь на нём достраивать запрос. Это даже хуже, чем если бы ты сразу всё в сервисе сделал. Попробуй так: Код: 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. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 19:22 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVostttest_task, Код: c# 1. У тебя не поймёшь, сделай нормально SaveChanges() это задача UnitOfWork, а не IRepository, сам посмотри какой бардак: 1. ISettingsRepository settingsRepository, IBaseRepository<Account> accountRepository... и 2. IRepository . Если бы сервисы не занимались построением запросов, 3. ты бы убрал их, инкапсулировал в IQuery<TResult> (например Query<AccountDTO>), чтобы в сервисах только была логика, стало бы чище и лучше. А сейчас грязно, понамешано всего в кучу, сам попробуй свой код прочитать отстранённо, очень тяжело. 1. Это да, согласен, тут по предложению твоему и skyANA добавил декоратор. сделал так, чтобы проще было с неимплементированными методами 2. Так заканчивается работа UoW - repository.SaveChanges() - дергается из сервисов. 3. А в чем профит? на мой взгляд: не единообразно, IQuery<TResult> уже сервиса, сервис может что-то там добавить, например, какую-то пост обработку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 20:03 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVostttest_task, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Не особо это улучшает ситуацию, ты возвращаешь живой и ленивый IQueryable от провайдера, потом начинаешь на нём достраивать запрос. Это даже хуже, чем если бы ты сразу всё в сервисе сделал. Попробуй так: Код: 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. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. спасибо. подумаю над этим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 20:20 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
test_task2. Так заканчивается работа UoW - repository.SaveChanges() - дергается из сервисов. У репозитория нет задачи завершать работу, отслеживать и коммитить изменения. Просто так ты путаешь людей, которые будут работать с твоим кодом, в примере ты должен показать, что заботишься на этот счёт. test_task3. А в чем профит? на мой взгляд: не единообразно, IQuery<TResult> уже сервиса, сервис может что-то там добавить, например, какую-то пост обработку Пост-обработку делай. Но там и запросы колбасишь. У тебя всё в куче. Сервис не должен знать о подробностях того, как ты запросы делаешь. LINQ, или SQL собираешь из кусочков, или вообще через веб-сервис данные запрашиваешь. Смешиваешь одно с другим, из-за этого тебе будет крайне тяжело тестировать свой код и сопровождать проблематично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 20:22 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVosttСервис не должен знать о подробностях того, как ты запросы делаешь. LINQ, или SQL собираешь из кусочков, или вообще через веб-сервис данные запрашиваешь. разве это выполнимо? при использовании поддерживающих LINQ ОРМ - еще куда не шло (тот же NH при ICriteria - уже выбывает из фэншуя, вернее там свой фэншуй). но если RAW SQL - там "своя атмосфэра", про внешние веб-сервисы тоже самое. я про то, что абстракции дырявые. для меня пока интересно чтобы работало для EF и NH ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 21:19 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
test_taskразве это выполнимо? Что выполнимо? У тебя некий чёрный ящик, ты отдаёшь в него параметры запроса, получаешь результат. Как это произошло не важно. Может там использовались ICriteria для NH, или LINQ для EF, или SQL, или ещё что-то. Своя атмосфера, ок. Нам знать этого не надо. Нам нужны данные. test_taskя про то, что абстракции дырявые. для меня пока интересно чтобы работало для EF и NH ИМХО не вижу смысла тратить время на NH, хотя на удивление там 4-ую версию пилят. Нафига, непонятно :) Что до абстракций, ну надо знать меру. Надо понимать, зачем ты абстрагируешься. Что тебе это даёт. Когда ты в сервис запихал и логику и выполнение запросов, через LINQ-абстракцию, вот у тебя и она и потекла. А что, если нужно сделать запрос, не реализуемый на LINQ? Например, CTE? На самом деле CTE можно сделать через вью, но это костыль. Напрямую нельзя. Придётся втыкать какие-то распорки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 21:27 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVosttУ тебя некий чёрный ящик, ты отдаёшь в него параметры запроса, получаешь результат. Как это произошло не важно. Может там использовались ICriteria для NH, или LINQ для EF, или SQL, или ещё что-то. Своя атмосфера, ок. Нам знать этого не надо. Нам нужны данные. для меня это проблема, может, и надуманная (я же не могу в сервисах использовать ICriteria, это прибиваться к реализации ОРМ). корень - фильтрация, проекции..., это же обязанность бизнес уровня, вроде. если не так, не получится никаких спецификаций, проекций, агрегаций. да и репозиторий теряет свою значимость. или я чего-то не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 21:54 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
test_task, Фильтры реализуются спецификациями. По сути те же яйца как ICriteria, только чуть более высокоуровневые, они для NH могут конвертится в ICriteria, а для EF в LINQ и т.д. Но это если ты хочешь получить объекты ORM (сущности). Запрос с параметрами и динамические фильтры -- это не одно и то же. Одним из параметров запроса может быть фильтр. У тебя из-за этого и протекает в сервисы какой-нибудь LINQ, а если бы не LINQ, то ошмётки ICriteria. В общем, ORM тебе только мешает в данном случае :) Если не сможешь просто разделить понятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 22:46 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVostttest_task, Спецификации изначально не расположены для работы с анонимными типами, по тому факту, что анонимные типы закрыты в том участке кода, где они используются, а дальше только рефлексией, что уже хуже, чем ADO-шные DataTable/DataSet. Убирай анонимные типы и заменяй на DTO-классы. С ними хотя бы протестировать можно твой код и писать обвязку. с чего эт гости понаехали? Какая такая рефлексия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 08:27 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВс чего эт гости понаехали? Какая такая рефлексия? А что ты будешь делать с объектом, не зная его типа? return IEnumerable<anonymous type> дальше что по твоему? без рефлексии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 08:55 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
Кому вернуть и как использовать? hVostt return IEnumerable<anonymous type> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 10:41 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВКому вернуть и как использовать? hVosttreturn IEnumerable<anonymous type> Я хз, с чем ты не согласен, и что ты хочешь узнать. Вернуть тому, кому нужно, использовать так, как хочется использовать. В чём проблема? По существу будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 11:17 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
реализовал, согласно рекомендациям hVostt, Query object https://github.com/fiqwenbv/ParrotWings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 21:38 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
test_task, Стало намного лучше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 21:56 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
hVostt, Если есть Код: c# 1. , то это так же хорошо, как например что Код: c# 1. может принимать в качестве аргумента Код: c# 1. Написанный фик знает кем. На крайняк есть картежи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 10:56 |
|
||
|
Тестовое задание
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, С анонимным типом ты за рамки метода не выйдешь, значит тебе придётся сосредоточить всю логику и запрос внутри. И получится каша. Чем тут помогут кортежи? Кортежи придётся строго типизировать в контрактах, это не лучше, чем отдельный класс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 10:59 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=39482937&tid=1355492]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 332ms |

| 0 / 0 |
