|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КПроблема в самой необходимости слоя DTO, когда без него можно обойтись. Не встречал таких ситуаций, даже в самых тривиальных задачах. Добавилось свойство в модель для каких-то своих нужд, зачем мне это поле протаскивать в SOA, нагружая трафик и пугая пользователей веб сервиса? А если у меня 2 веб сервиса, в одном нужно протаскивать это свойство, в другом нельзя. Ну и так далее. Не нужно мешать логику с трансфером, сельчанин :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:22 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
МСУТак... Попахивает топиком ненависти к ASP.NET MVC Это был способ привлечь читателей в топик. Правильное название - залог успеха. МСУАлексей КIQueryable + подставляемые выражения (назовём это так) позволяют творить чудеса. Зачем же себя ограничивать? Так ты с этим IQueryable + "подставляемые выражения" можешь точно так же работать в шаблоне спецификации. В чем проблема? Накохер (с) мне таскаться с этим IQueryable по всему полю? Сеять потенциальные ошибки, плодить потенциальные грабли и пугать местное население? В топку :)Накойхер (ц) мне "спецификации", если наружу может торчать честный IQueryable? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:23 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КНакойхер (ц) мне "спецификации", если наружу может торчать честный IQueryable? Это проблема (Repository, как фабрика запросов). Как будешь её решать? Допиливать код в 100500 местах? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:26 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
skyANAhVosttпропущено... Эту статью уже как-то рассматривали. Проблем в передаче из репозитория IQueryable<T> не увидел.Как поарботаешь в команде из 10+ человек, так поймёшь. я понял. речь идёт о необъяснимых вещах. вы так не переживайте, я видел достаточно серьезные проекты, над которыми работают овер 10 человек. так там не то, что не скрывают IQueryable<T>, так вообще фигачат SQL-ники прямо в обработчиках кнопок, фигарят классы для маппинга ОРМ прямо что называется "на месте" и вообще ничуть не запариваются. так что все эти 1000+ команды -- по крайне мере в наших реалиях вот совершенно не аргумент, говнокодят без зазрения совести, только в путь... давайте хоть одну реальную проблему, к которой может привести выдача репой IQueryable<T>. по вашей же ссылке на каждую проблему есть решение. где эта нерешаемая трабла, связанная с применением IQueryable<T>? серьезно же спрашиваю, может я чего-то незнаю. и только без вот этих вот "вырастешь — узнаешь" ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:28 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
МСУАлексей КПроблема в самой необходимости слоя DTO, когда без него можно обойтись. Не встречал таких ситуаций, даже в самых тривиальных задачах. Добавилось свойство в модель для каких-то своих нужд, зачем мне это поле протаскивать в SOA, нагружая трафик и пугая пользователей веб сервиса?Потому что добавление поля в БД влечёт за собой необходимость изменения формы редактирования. Накой мне добавлять это поле ещё в N классах? МСУА если у меня 2 веб сервиса, в одном нужно протаскивать это свойство, в другом нельзя. Ну и так далее.Там где это не надо - этого делать не надо. :-) МСУНе нужно мешать логику с трансфером, сельчанин :)Ну уж как умеем, если что не так - извиняйте. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:28 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
МСУплодить потенциальные грабли и пугать местное население блин ну выдайте хоть одну потенциальную граблю. че людей мучаете? что за мистика такая??? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:29 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
hVosttтак что все эти 1000+ команды -- по крайне мере в наших реалиях вот совершенно не аргумент, говнокодят без зазрения совести, только в путь... Мы тут паттерны обсуждаем, а не гавнокод. В чём смысл твоего выступления тут? hVosttдавайте хоть одну реальную проблему, к которой может привести выдача репой IQueryable<T>. по вашей же ссылке на каждую проблему есть решение. В ссылке всё описано. Если до сих пор не понял эту проблему, то выпей яду. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:32 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
hVosttМСУплодить потенциальные грабли и пугать местное население блин ну выдайте хоть одну потенциальную граблю. че людей мучаете? что за мистика такая??? Ты реально такой тугой? В первой же главе "Проблема: Repository, как фабрика запросов" и 2 варианта решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:33 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
МСУАлексей КНакойхер (ц) мне "спецификации", если наружу может торчать честный IQueryable? Это проблема (Repository, как фабрика запросов). Как будешь её решать? Допиливать код в 100500 местах?Да нет никаких проблем. Все проблемы в головах авторов паттерна "репозитарий", которые вдруг решили, что можно вынести логику работы с данными отдельно от остальной логики. Это не всегда возможно, поскольку может привести к "N+1". Накой мне проблемы с производительностью? У меня есть классы сущностей (содержат данные), классы сервисов (содержат логику) и выражения (содержат выражения :-), с целью избежать "N+1" и иметь возможность повторного использования). Сервер приложений, по сути, один большой репозитарий... А нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:36 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КПотому что добавление поля в БД влечёт за собой необходимость изменения формы редактирования. Накой мне добавлять это поле ещё в N классах? Добавление поля в БД вовсе не означает добавление его в веб сервис. Алексей КМСУА если у меня 2 веб сервиса, в одном нужно протаскивать это свойство, в другом нельзя. Ну и так далее.Там где это не надо - этого делать не надо. :-) Это поле (где не надо) всё-равно будет протаскивать в wsdl подписчикам. Их кодогенерированные классы будут содержать лишние свойства. Представляешь ситуацию, если SOA подписчикам нужно только Id и Title, а ты им еще десяток свойств сливаешь? :) Алексей КНу уж как умеем, если что не так - извиняйте. :-) Наезд на DTO считаю дерзким и необоснованным! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:37 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КДа нет никаких проблем. Все проблемы в головах авторов паттерна "репозитарий", которые вдруг решили, что можно вынести логику работы с данными отдельно от остальной логики. Это не всегда возможно, поскольку может привести к "N+1". Накой мне проблемы с производительностью? Так, еще раз. Какой N + 1, у нас же есть Specification? Ты сказал, что у него возможности ограничены. Но в чем выражено ограничение не признаешься :) Во-вторых, можно Func<> передавать входным параметром, если приспичит. Алексей КА нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться. Ты так и не ответил на вопрос про 100500 исправлений в коде... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:40 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
МСУАлексей КПотому что добавление поля в БД влечёт за собой необходимость изменения формы редактирования. Накой мне добавлять это поле ещё в N классах? Добавление поля в БД вовсе не означает добавление его в веб сервис. Алексей Кпропущено... Там где это не надо - этого делать не надо. :-) Это поле (где не надо) всё-равно будет протаскивать в wsdl подписчикам. Их кодогенерированные классы будут содержать лишние свойства. Представляешь ситуацию, если SOA подписчикам нужно только Id и Title, а ты им еще десяток свойств сливаешь? :)Я говорю про случаи, когда в сервис надо выложить именно "всё". В веб-проектах, вероятно, такое не требуется. Но у меня WPF, тут такое требуется часто. МСУАлексей КНу уж как умеем, если что не так - извиняйте. :-) Наезд на DTO считаю дерзким и необоснованным! :)Зря. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:42 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
МСУhVosttпропущено... блин ну выдайте хоть одну потенциальную граблю. че людей мучаете? что за мистика такая??? Ты реально такой тугой? В первой же главе "Проблема: Repository, как фабрика запросов" и 2 варианта решения. делаем набор спецификаций. получаем из репы IQueryable<T> по указанной спецификации. и не надо плодить 100500 методов. зато можно пейджинг повесить без видимых проблем. или отдать в OData. и вообще. какие проблемы-то? ниче не понял. яду выпить не предлагать. скажи лучше что сам не знаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:45 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
МСУТы сказал, что у него возможности ограничены. Но в чем выражено ограничение не признаешься :)Максимум что там можно сделать, это подставить выражение в один из расширяющих методов класса Queryable (Where, Select и т. п.). Мне этого недостаточно. МСУМСУВо-вторых, можно Func<> передавать входным параметром, если приспичит.И как мы будем подставлять IL, живущий в Func<>, в LINQ Expression? МСУАлексей КА нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться. Ты так и не ответил на вопрос про 100500 исправлений в коде... Потому что при использовании подставляемых выражений с повторным использованием всё в порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:50 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
hVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:50 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КА нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться. Проблема: Repository, как фабрика запросовОбъект IQueryable в .NET дает больше возможностей сделать ошибки в проектировании. Ну дак о чём и речь, что фиг уследишь за тем, что все в команде умеют пользоваться IQueryable и не напишут кода, создающего проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:55 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
skyANAhVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой?Это проблема не IQueryable как такового, а проблема автора, который не добавил в проект необходимой абстракции. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:56 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
hVosttделаем набор спецификаций. получаем из репы IQueryable<T> по указанной спецификации. и не надо плодить 100500 методов. зато можно пейджинг повесить без видимых проблем. или отдать в OData. и вообще. какие проблемы-то? ниче не понял. яду выпить не предлагать. скажи лучше что сам не знаешь. Какой набор спецификаций, зачем, куда? Какие 100500 методов? Ты о чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:58 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
skyANAАлексей КА нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться. Проблема: Repository, как фабрика запросовОбъект IQueryable в .NET дает больше возможностей сделать ошибки в проектировании. Ну дак о чём и речь, что фиг уследишь за тем, что все в команде умеют пользоваться IQueryable и не напишут кода, создающего проблемы.Оно даёт не больше возможностей для ошибки, чем всё остальное. Автор статьи лукавит. Вероятно, он основывается на своём неудачном опыте. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:58 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КskyANAhVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой?Это проблема не IQueryable как такового, а проблема автора, который не добавил в проект необходимой абстракции. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
А Вы как обязываете своих разработчиков добавлять такие вот абстракции в проект? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 15:59 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
skyANAhVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой? Меня в параграфе «Проблема: Repository, как фабрика запросов» устраивает: Решение №2 Можно использовать шаблон Specification вместе c шаблоном Query Object. Второй шаблон уже реализован в .NET с помощью дерева запросов на LINQ. Только возвращать можно не IEnumerable<T>, а IQueryable<T> — и я не вижу к каким проблемам это может привести. Зато явный профит вижу. Можно сделать Take и Skip, можно сделать OfType, можно сделать выборку только нужных полей (например, если не хочется для отдельных случаев вытаскивать большой блоб) или дополнительно уточнить запрос динамически ( в тех случаях, когда спецификации уже не подходят, например OData, или кастомный фильтр/сортировщик на гриде ). Я считаю, что IQueryable<T> — разработан совсем не для того, чтобы его похоронили где-то на задворках репозитория. Все, что делается поверх, это очень грубое повторение всё той же работы, которая уже проделана за вас. Какие-то специфичные методы для очень конкретных операций над данными, типо бизнес-логика -- очень хорошо, ведь надо свести к минимуму возможность прикладных разработчиков прострелить себе ногу. Но возможности IQueryable<T> в этом отношении явно переоценены. Я не вижу каких-то явных нерешаемых проблем. Больше вижу религиозно-фанатичный налет в мышлении, раз вместо объяснений летят какие-то непонятные пасы с указанием на бутылку с ядом или "вырастешь узнаешь". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 16:02 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... пропущено... Ну дак о чём и речь, что фиг уследишь за тем, что все в команде умеют пользоваться IQueryable и не напишут кода, создающего проблемы.Оно даёт не больше возможностей для ошибки, чем всё остальное. Автор статьи лукавит. Вероятно, он основывается на своём неудачном опыте. :-)То есть возможность дублирования логики запросов - это не возможность? Ещё раз: как вы эту НЕВОЗМОЖНОСТЬ обеспечиваете? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 16:03 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КЯ говорю про случаи, когда в сервис надо выложить именно "всё". В веб-проектах, вероятно, такое не требуется. Но у меня WPF, тут такое требуется часто. Ну хорошо, выложилось всё. Но причем тут логика (модель, code behind валидация) и презентационный слой (UI, валидация)? Алексей КМаксимум что там можно сделать, это подставить выражение в один из расширяющих методов класса Queryable (Where, Select и т. п.). Мне этого недостаточно. Почему же, ты точно так же можешь конструировать весь отложенный запрос или несколько. Алексей КИ как мы будем подставлять IL, живущий в Func<>, в LINQ Expression? Какой IL? Я про Func<A, B> predicate, который можно передавать в аргументы. Алексей КПотому что при использовании подставляемых выражений с повторным использованием всё в порядке. Какие в результирущем IQueryable "подставляемые выражения"? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 16:03 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Это проблема не IQueryable как такового, а проблема автора, который не добавил в проект необходимой абстракции. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
А Вы как обязываете своих разработчиков добавлять такие вот абстракции в проект?Так же как и в остальных случаях. Это могла быть и недостающая вьюха в БД, и всё что угодно, в зависимости от имеющейся архитектуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 16:04 |
|
IRepository как пользоваться
|
|||
---|---|---|---|
#18+
Алексей КskyANAhVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой?Это проблема не IQueryable как такового, а проблема автора, который не добавил в проект необходимой абстракции. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Неправильный ответ. Ты отдаешь IQueryable, чтобы его потом можно было еще дофильтровывать. Так вот о этой дофильтровке и идет речь. В 10 местах ты использовал дофильтровку, потом появился новый признак в БД, который должен учитываться во всех дофильтровках и мы получили в бубен. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 16:05 |
|
|
start [/forum/topic.php?fid=17&msg=38414442&tid=1349917]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 262ms |
total: | 400ms |
0 / 0 |