Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Есть ли смысл в асинхронности / 25 сообщений из 46, страница 1 из 2
06.08.2019, 00:41
    #39845631
Junior1997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Код: c#
1.
2.
3.
4.
5.
6.
        public async Task<JsonResult> Transfer()
        {
            var client = new CM_PL.HttpClients.GateWayClient();
            var result = await client.SendAnalysisAsync();
            return Json(result, JsonRequestBehavior.AllowGet);
        }



скажите пожалуйста есть ли смысл в асинхронности в этом коде? мне кажется что нет смысла только память грузить, так как ретурн произайдёт только после того как отработает SendAnalysisAsync. или я ошиюаюсь(((
...
Рейтинг: 0 / 0
06.08.2019, 08:36
    #39845658
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Junior1997,

давай попробую подвести тебя к ответу. в чем смысл асинхроности?
...
Рейтинг: 0 / 0
06.08.2019, 09:35
    #39845679
Valery_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Junior1997,

Если это долгая операция - то смысл есть(не замораживать интерфейс).
А судя по всему, это долгая операция.

Асинхронность нужна когда параллельность важнее простоты и имеет смысл.
Последовательный код нужен тогда, когда простота кода важнее производительности.

Если с введением параллельности ты ускоришь выполнение метода с 100мс до 90мс - то вряд ли это нужно.
...
Рейтинг: 0 / 0
06.08.2019, 09:43
    #39845681
Junior1997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Valery_BJunior1997,

Если это долгая операция - то смысл есть(не замораживать интерфейс).
А судя по всему, это долгая операция.

Асинхронность нужна когда параллельность важнее простоты и имеет смысл.
Последовательный код нужен тогда, когда простота кода важнее производительности.

Если с введением параллельности ты ускоришь выполнение метода с 100мс до 90мс - то вряд ли это нужно.

Да. но в данном примере в чём смысл return? результат всё равно вернётся же через ннн-е количесво времени. Т.е если бы это было Winforms или WPF то понятно поток основной не блокируется и мы спокойно получннеые данные в UI
А тут основной паток не блокируется... запрос с клиента отработал но ответа не плолучил?
...
Рейтинг: 0 / 0
06.08.2019, 09:47
    #39845683
Junior1997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
handmadeFromRuJunior1997,

давай попробую подвести тебя к ответу. в чем смысл асинхроности?

Не блокировать основной поток.
...
Рейтинг: 0 / 0
06.08.2019, 09:53
    #39845687
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Junior1997handmadeFromRuJunior1997,

давай попробую подвести тебя к ответу. в чем смысл асинхроности?

Не блокировать основной поток.

Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс.
...
Рейтинг: 0 / 0
06.08.2019, 09:55
    #39845688
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Junior1997handmadeFromRuJunior1997,

давай попробую подвести тебя к ответу. в чем смысл асинхроности?

Не блокировать основной поток.
если идет вопрос о сервере и асп приложение то вызов в коде асинхроного вызова на долгую операцию даст асп потоку что был использован для запроса сделать полезную работу по обработке еще одно реквеста к примеру.
...
Рейтинг: 0 / 0
06.08.2019, 09:56
    #39845689
Junior1997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
hVosttJunior1997пропущено...


Не блокировать основной поток.

Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс.
так в том и дело в данном примере ничего другого Action не делает. Поэтому возникли вопросы
...
Рейтинг: 0 / 0
06.08.2019, 10:00
    #39845693
Junior1997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
handmadeFromRuJunior1997пропущено...


Не блокировать основной поток.
если идет вопрос о сервере и асп приложение то вызов в коде асинхроного вызова на долгую операцию даст асп потоку что был использован для запроса сделать полезную работу по обработке еще одно реквеста к примеру.

Да речь идёт про ASP, А что тогда с результатом? ПОлучается так что юзер открыл страницу. она не блокируется срендерилась быстро очень. но данных на ней нет и юзер переходит а другую страницу думая что это ошибка?
...
Рейтинг: 0 / 0
06.08.2019, 10:05
    #39845697
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Junior1997Да речь идёт про ASP, А что тогда с результатом? ПОлучается так что юзер открыл страницу. она не блокируется срендерилась быстро очень. но данных на ней нет и юзер переходит а другую страницу думая что это ошибка?
ты мыслишь очень узко. у тебя может 10к юзеров онлайн и делать свои запросы к серваку.
ты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат. поэтому она оверхед на быстрой операции.
время выполнение не улушиться конечно же
...
Рейтинг: 0 / 0
06.08.2019, 10:19
    #39845709
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
handmadeFromRu,

Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно.
...
Рейтинг: 0 / 0
06.08.2019, 10:21
    #39845711
Valery_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Junior1997,
How Requests Are Processed by the Thread Pool

In general, use synchronous methods for the following conditions:
автор- The operations are simple or short-running.
- Simplicity is more important than efficiency.
- The operations are primarily CPU operations instead of operations that involve extensive disk or network overhead. Using asynchronous action methods on CPU-bound operations provides no benefits and results in more overhead.

In general, use asynchronous methods for the following conditions:
автор- You're calling services that can be consumed through asynchronous methods, and you're using .NET 4.5 or higher.
- The operations are network-bound or I/O-bound instead of CPU-bound.
- Parallelism is more important than simplicity of code.
- You want to provide a mechanism that lets users cancel a long-running request.
- When the benefit of switching threads outweighs the cost of the context switch. In general, you should make a method asynchronous if the synchronous method waits on the ASP.NET request thread while doing no work. By making the call asynchronous, the ASP.NET request thread is not stalled doing no work while it waits for the web service request to complete.
- Testing shows that the blocking operations are a bottleneck in site performance and that IIS can service more requests by using asynchronous methods for these blocking calls.
...
Рейтинг: 0 / 0
06.08.2019, 10:26
    #39845713
Valery_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
handmadeFromRuты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат.

Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ?
Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ?
...
Рейтинг: 0 / 0
06.08.2019, 10:42
    #39845724
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Valery_BhandmadeFromRuты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат.

Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ?
Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ?
ага

hVostt Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно.

разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память.
(именно про быстрые результаты)
...
Рейтинг: 0 / 0
06.08.2019, 10:46
    #39845728
Junior1997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
hVostthandmadeFromRu,

Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно.
А если не сразу. Мне вот не понятно. Получается так что если запрос отработал пришёл респонс.... данных нет. и пока данных нет то юзер может запрашивать другие данные с сервера?
...
Рейтинг: 0 / 0
06.08.2019, 10:46
    #39845729
Junior1997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Valery_B,

Спасибо
...
Рейтинг: 0 / 0
06.08.2019, 12:46
    #39845813
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
handmadeFromRuhVosttНу не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно.

разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память.
(именно про быстрые результаты)

во-первых, в asp.net core отказались от контекста синхронизации, что конечно приводит к отсутствию возможности хранить принципала в контексте потока.

во-вторых, если асинхронный метод возвращает завершённую задачу никакой упаковки и работы с потоками нет, всё выполняется синхронно, как вызов обычного метода.

кое какой оверхед при этом конечно есть, чуть больше кода на реализацию state machine, но совсем не критично.
...
Рейтинг: 0 / 0
06.08.2019, 14:15
    #39845866
vb_sub
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
handmadeFromRuValery_Bпропущено...


Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ?
Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ?
ага

hVostt Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно.

разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память.
(именно про быстрые результаты)

для таких задач(быстрых операций) нужно использовать ValueTask.
...
Рейтинг: 0 / 0
06.08.2019, 17:47
    #39846001
Hexag0v
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
hVosttJunior1997пропущено...


Не блокировать основной поток.

Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс.

Ето если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше.
Получится обратный эффект.
...
Рейтинг: 0 / 0
06.08.2019, 18:44
    #39846029
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
vb_subдля таких задач(быстрых операций) нужно использовать ValueTask.

классическое (уже) заблуждение. профит от ValueTask можно получить на очень очень узком спектре операций, которые ещё ко всему прочему надо выявить и протестировать. на деле получается обратная ситуация.

обычно не нужно использовать ValueTask и тем более думать, что это решение проблемы с производительностью.
...
Рейтинг: 0 / 0
06.08.2019, 18:48
    #39846030
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Hexag0vЕто если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше.
Получится обратный эффект.

это не совсем корректный взгляд на вещи. во-первых, перед базой может стоять кеш в виде редиски, тоже асинк, во-вторых проблема узкого места в БД никуда не уйдёт и без потоков сервера, так как способность обрабатывать все запросы решается масштабированием. а асинк снижает потребность в таком решении.
...
Рейтинг: 0 / 0
06.08.2019, 20:13
    #39846089
Hexag0v
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
hVosttHexag0vЕто если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше.
Получится обратный эффект.

это не совсем корректный взгляд на вещи. во-первых, перед базой может стоять кеш в виде редиски, тоже асинк, во-вторых проблема узкого места в БД никуда не уйдёт и без потоков сервера, так как способность обрабатывать все запросы решается масштабированием. а асинк снижает потребность в таком решении.
Выгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server?
...
Рейтинг: 0 / 0
07.08.2019, 00:07
    #39846124
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Hexag0vВыгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server?

Глупости какие-то говорите. Это не коррелирующие понятия. Если у вас узкое звено это дб сервер, то надо решать эту проблему, при чём тут http сервер? Или вы предлагаете пользователям ловить 503, лишь бы бд сервер не страдал? Какой посыл-то? )))
...
Рейтинг: 0 / 0
07.08.2019, 09:21
    #39846176
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Hexag0vВыгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server?
Если вы будете масштабировать http server, то вы обратно придёте к "узкое место это база (такое тоже бывает)... мы нагрузим ее еще больше".

То есть к тому, о чём пишет hVostt: надо решать проблему с db server
...
Рейтинг: 0 / 0
07.08.2019, 09:44
    #39846186
Hexag0v
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в асинхронности
Правильно,
посыл к тому, что перед тем как переписывать код на асинхронный, нужно понять поможет ли это вообще, и в чем проблема на самом деле.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Есть ли смысл в асинхронности / 25 сообщений из 46, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]