|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
Petro123fkthat, Ты пропускаешь мои аргументы. MS рекумендует иметь по два метода. Асинхронно и синхронно. Одним не обойтись. MS может рекомендовать хоть ссать стоя на коленях. Нам просто синхронные методы нахер не нужны, потому что все равно все контроллеры асинхронные и в итоге все через await вызывается. Рекомендация иметь пару методов это разве что для разработчиков каких-нибудь библиотек - чисто для удобства пользователя - вдруг кому надо будет синхронно вызвать. Хотя для этого достаточно всего лишь дописать к асинхронному вызову ".Result", или ".Wait". Кстати, сам МС этой рекомендации следует уже далеко не всегда - сейчас в коре уже полно апи где все вызовы только асинхронные. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:08 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatвсе контроллеры асинхронныето есть get запрос не ждет ответ? Только не отсылай к картинке что надо освободить поток для другого запроса. Я в курсе. ... Вы сдерали репо не быстрым но асинхронным на все все свои проекты. А это чревато. Может потребоваться скорость, а это методы без xxxxAsync и List вместо IEnumerable. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:15 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
Petro123fkthatвсе контроллеры асинхронныето есть get запрос не ждет ответ? Пилять. Да разберись же ты уже в вопросе, или не спорь. Если ты десктоп пишешь, то тебе это все равно нафиг не упало. Ты про "select/poll" в юниксовых апи слышал когда-нибудь? Ну так вот, в случае операций i/o которых в веб-приложении овердофига async/await дает ту же самую выгоду. Запрос ХТТП в итоге все равно синхронен, потому что иначе быть не может, но при выполнении параллельно дофига запросов потоки используются более рационально, потому что поток, который бы в случае синхронного выполнения сидел бы и тупо ждал завершения ввода-вывода может переключиться на выполнение другого кода. В юниксах это называется "select/poll", в виндах "i/o completion port". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:26 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatЗапрос ХТТП в итоге все равно синхронен,верно. fkthatпоток, который бы в случае синхронного выполнения сидел бы и тупо ждал завершения ввода-вывода Теперь читай вариант решения. Без программиста: авторПри запуске Tomcat создаст пул потоков и экземпляр сервлета. При поступлении запросов методы сервлета будут запускаться на потоках из пула. Сервлет не уничтожается до окончания работы сервера. Потоки можно создавать самостоятельно, но зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:31 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthat, То есть поток не сидит и не ждет, как ты описал страшилку. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:32 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
Petro123fkthat, То есть поток не сидит и не ждет, как ты описал страшилку. Ога. А метод твоего сервлета сел ждать запроса к БД и заблокировал поток. И нахер мне твой томкат и как там сделано, мы про asp.net говорим. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:36 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatЕсли ты десктоп пишешь, то тебе это все равно нафиг не упало. Задача повысить оклады сотрудников на 1.5. Покажи важность асинхронности с IEnumerable против синхронности и List /Collection ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:36 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatИ нахер мне твой томкат и как там сделано, мы про asp.net говорим.ну, ты к юниксам сделал отсылку)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:37 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatметод твоего сервлета сел ждать запроса к БД и заблокировал потоквремя запроа 0,1сек. Мало? Есть кэширование когда не из базы берет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:38 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatНам просто синхронные методы нахер не нужныони быстрее)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:40 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
Petro123, Я сливаю. Все, надоело. Ты победил. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:45 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatPetro123, Я сливаю. Все, надоело. Ты победил. неееет. Консенсус. Я обязательно и твой асинхронный воткну себе)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:55 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatPetro123пропущено... то есть get запрос не ждет ответ? Пилять. Да разберись же ты уже в вопросе, или не спорь. Не трать ты на него время :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:58 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatЯ сливаю. Все, надоело. Ты победил. Молоток :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:59 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
stenfordя спросил, дошло-ли до тебя что проблем с множественным перечислением у IEnumerable за которые ты собирался убивать у репозиториев не будет? Или переформулировать этот вопрос в еще более простой форме? Я уже привёл список проблем, связанных с IEnumerable. Зачем вы просите меня повторяться? Если с чем не согласны, напишите. Если непонятно, перечитайте. stenfordво фрейворках много чего появляется, это не означает что надо автоматически не думая хватать новые фичи и пихать их в каждую щель. IEnumerable вполне адекватный интефейс для репозиториев для возврата коллекций, а уж каких-то причин обязательно использовать IReadOnlyCollection вместо него и тем более нет Я не призывал что-то делать автоматически и не думая, да аргументов я до сих пор не вижу кроме того, что вы считаете IEnumerable адекватным интерфейсом. Жаль вы до сих пор не можете пояснить почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 10:05 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatРаботает очень хорошо. Ты, походу, никак не понимаешь, что наружу там не торчит никакого ни LINQ ни EF, ничего подобного. Мы возвращаем только уже готовые объекты или коллекции объектов, выбранные по некоторым нужным нам критериям. Что там при этом внутри все это скрыто. Есть скажем интерфейс: Код: c# 1. 2. 3. 4. 5. 6.
У сиквельного репо реализации Find и Get будут одни, у монговского другие и т.п. А снаружи это без разницы и с т.ч. клиента выглядит одинаково. Я всё равно не вижу, почему не вернуть интерфейс коллекции, если никаких отложенных вычислений нет, и вы возвращаете ни что иное, как коллекции. И по семантике, и по факту. Но вторая проблема здесь заключается в том, что такое у вас Foo? Это агрегат, сущность? Есть ли возможность получить корень агрегата полностью? Или такое поведение у вас инкапсулируется в объекте Query? Что делать с пейджингом? Приведённый вами интерфейс в упор этого не поддерживает, даже при всём желании. fkthatУ сиквельного репо реализации Find и Get будут одни, у монговского другие и т.п. А снаружи это без разницы и с т.ч. клиента выглядит одинаково. Это безусловно хорошо. Таким и должен быть репозиторий. fkthatА в твоем ошибочном представлении репо это что-то такое: Код: c# 1. 2. 3.
И в таком, твоем репо, действителььно никакого смысла нет - что за резон просто тупо возвращать свойство контекста - да его и так можно напрямую брать. А с чего вы решили, что я буду тупо свойство контекста возвращать? И с чего вы решили, что IQueryable не может ходить через EF, Mongo и т.д. и т.п.? Эта та же абстракция, что и ваш Query. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 10:12 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
hVosttЯ всё равно не вижу, почему не вернуть интерфейс коллекции, если никаких отложенных вычислений нет, и вы возвращаете ни что иное, как коллекции. И по семантике, и по факту. Сразу вопрос. Какой именно коллекции? Мне нравится Array, Васе нравится List, а Вове, так вообще HashSet. Потом, мне например, удобно внутри репо работать с массивом, я вот беру и возвращаю массив. А потом алгоритм поменялся, и стало удобно возвращать List. Что мне делать? Городить костыли внутри репо, или ломать все что снаружи? Это другая сторона инкапсуляции - не тольько спрятать что должно быть спрятано, но и иметь возможность это спрятанное поменять, не затрагивая ничего внешнего. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 10:20 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatудобно внутри репо работать с массивом, я вот беру и возвращаю массивну ты прям пошутил)) Нам много не надо, свободу давай (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 10:38 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatСразу вопрос. Какой именно коллекции? Мне нравится Array, Васе нравится List, а Вове, так вообще HashSet. Это не вопрос вкусов. Возвращать нужно наиболее абстрактный интерфейс, семантически отвечающий задаче, и не вызывающий проблем с производительностью и сопровождением. IReadOnlyCollection появился в библитеке, к сожалению, слишком поздно. К тому времени многие привыкли к IEnumerable, наплевав на семантику, производительность, эффективность и сопровождение. Почему всегда в спорах в инженерной дисциплине часто скатываются к фломастерам? Что за странная тенденция такая, нездоровая. fkthatПотом, мне например, удобно внутри репо работать с массивом, я вот беру и возвращаю массив. А потом алгоритм поменялся, и стало удобно возвращать List. Что мне делать? И массив и список и другие коллекции реализуют интерфейс IReadOnlyCollection. Только он, как интерфейс, гарантирует, что это конечный список, так как имеет свойство количества, и прямо декларирует, что он только для чтения, что означает возможность безопасно закешировать результат. fkthatГородить костыли внутри репо, или ломать все что снаружи? Это другая сторона инкапсуляции - не тольько спрятать что должно быть спрятано, но и иметь возможность это спрятанное поменять, не затрагивая ничего внешнего. Интерфейс коллекции вашим требованиям удовлетворяет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 18:20 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthat, Продолжим. Про пейджинг вы мне не ответили. Как оказалось, отложенные асинхронный вычисления ваши репо не поддерживают. А что делать, если вам нужна проекция? Или огромное число проекций? Или проекции, которые на стадии разработки неизвестны? Будете периодически лазить и допиливать репо? Ох, как же это бьёт в ущерб идеи полной независимости и инкапсуляции. IQueryable отвечает задачам и асинхронного отложенного вычисления, и возможности пейджинга, и возможности бесчисленных эффективных проекций без изменения ни строчки кода репо. На нём можно реализовать OData, например. Или кастомный протокол, выбирающий требуемые данные (конкретные поля), не вытягивая остальное. Возможность тянуть данные по связям, дааа, и фильтровать по ним. Даже фильтровать по агрегациям. Я не к тому, что IQueryable интерфейс это лучший способ работы с данными на все времена. Не всегда он подходит. Я делал проекты на IQueryable, большие и на CQRS и c EventSourcing, и даже было дело на ActiveObject. И могу сказать по опыту, все набросы в сторону IQueryable не стоят и выеденного яйца. Пока что из всех, кто бы реально мог аргументировать что-то против IQueryable я могу выделить skyANA, учитывая его опыт в высоконагруженном проекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 18:27 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
Вообще, это классика. Когда задача состоит в том, чтобы спроектировать и сделать автомобиль, окрылённый идеей полной инкапсуляции лепит что-то между самолётом, лодкой, автомобилем, трактором и жилым домом. Реальные задачи его не интересуют :) Сам такой был, сам таким отчасти остаюсь... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 18:34 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
hVostt, Возвращай что хочешь. С такими упоротыми как ты работать только один способ - во всем с ними соглашаться, и наблюдать как они сами себе могилу роют. Тем более если оценить, то, пожалуй, я за свою жизнь процентов 80 денег из заработанных мной в айти заработал за ковыряние в чужом говнокоде, т.ч. чем вас больше, тем мне лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 19:07 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
hVostt И массив и список и другие коллекции реализуют интерфейс IReadOnlyCollection. Только он, как интерфейс, гарантирует, что это конечный список, так как имеет свойство количества, и прямо декларирует, что он только для чтения, что означает возможность безопасно закешировать результат. Не учи людей плохому. Он декларирует только то. что посредством него, ты ничего не сможешь добавить. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Если полагать, что Count никогда не измениться, можно так выстрелить себе в ногу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 09:33 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
fkthatВозвращай что хочешь. С такими упоротыми как ты работать только один способ - во всем с ними соглашаться, и наблюдать как они сами себе могилу роют. Тем более если оценить, то, пожалуй, я за свою жизнь процентов 80 денег из заработанных мной в айти заработал за ковыряние в чужом говнокоде, т.ч. чем вас больше, тем мне лучше Я не просил вас соглашаться со мной, я ждал аргументов. Аргументов нет, есть какая-то беспросветная чушь про могилы, деньги и говнокод. Ну и ожидаемый переход на личности. Где упоротость, молодой человек? Я все свои тезисы пояснил и не однократно. Видимо худо вам живётся с такой нежной и обидчивой душевной организацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2019, 00:09 |
|
Передача лямбды в репозиторий. Где ошибка?
|
|||
---|---|---|---|
#18+
ЕвгенийВНе учи людей плохому. Он декларирует только то. что посредством него, ты ничего не сможешь добавить. Верно, что и означает read only, ЕвгенийВЕсли полагать, что Count никогда не измениться, можно так выстрелить себе в ногу. Так полагать можно про всё что угодно, и даже про "неизменяемые" строки. Контракт означает, что он ДОЛЖЕН соблюдаться, и что этого МОЖНО ожидать. Но если как ты говоришь, не верить контракту, то далеко ты не продвинешься, по-больше try/catch, фреймворку тоже доверять нельзя. Откуда ты знаешь, что вместо открытого дескриптора файла тебе не вернут просто какое-то рандомное число? Никогда не знаешь. Бред в общем, аргумент странный. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2019, 00:13 |
|
|
start [/forum/topic.php?fid=17&msg=39812307&tid=1349125]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 275ms |
0 / 0 |