|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
Привет. Хочу заставить код контроллера вернуть вью, но оставить за собой некий долгоиграющий процесс в отдельном потоке. Что-то типа Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Работает, но ждет завершения LongRunningProcess(). Вроде как основной поток не завершается и вью не возвращается, пока LongRunningProcess() не завершится. Что не так в этой реализации? Как это вообще делается? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 18:50 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
NickRenziglov, Смысла большого так делать нету. Клиент на ajax тебя и так асинхронно ждет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 19:20 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
Petro123, Кто говорит про клиента? Никто не говорит. Смысл так делать есть огромный. После того, как юзер залогинился, он видит свою старт-апную страницу и начинает с ней работать. В это время долгоиграющий процесс, который запустил котроллер, указанный выше (или ниже, где там мой код), подготавливает для него другие данные, которые он будет использовать в своей работе. В противном случае, загрузка этих "других данных" будет производится синхронно, как только пользователь поднимет соответствующую страницу. Это означает ждать, а ждать - это то, что я хочу фикснуть асинхронным контроллером. Хранилище для этих "других данных" пока не ясно. Сессия отпадает, поскольку в контексте дочернего потока ее нет. Но это следующий этап. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 20:10 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
NickRenziglov, Обычно время запроса серверу 0,2 сек. Чем ты там собрался тормозить мне неведомо. Не надо веб оптимизировать. Все придумано за нас. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 20:30 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
Petro123, >Все придумано за нас Вы счастливый человек в таком случае. К сожалению, я должен фикснуть проблему с производительностью. Метод, о котором я спрашиваю - асинхронный контроллер. Может есть другие способы, но я пробую пока этот. Есть ли что-нибудь по существу проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 20:50 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
NickRenziglov, что делает LongRunningProcess? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 22:33 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
skyANA, Ходит на другой сервер и прогружает справочники (~20 sec). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 23:14 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
NickRenziglovоставить за собой некий долгоиграющий процесс в отдельном потокеАбстрагируясь от всего остального - это таймер ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 23:25 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
NickRenziglovХодит на другой сервер и прогружает справочники (~20 sec). 20 сек? Офигеть. Прогружает куда? "Прогружай" ночью. А утром тормозить не будет и все счастливы. На сервере ставишь JOB и сиквел постоянно "прогружает" и готовит данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 00:16 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
Petro123, >Прогружает куда? На клиента (mobile, Silverlight, ну и ASP.NET MVC c его клиентами). Все эти клиенты хранят загруженные экземпляры справочников. На мобайл/Silverlight проблема решена, так как там есть App на каждого, в котором можно запустить поток не тормозя навигации. В ASP.NET MVC аппликэйшн - это IIS. >На сервере ставишь JOB и сиквел постоянно "прогружает" и готовит данные. Уважаемый Petro123. Меня интересуют только решения с асинхронным контроллером. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 00:26 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
По рукам надо бить за такую писанину. Используйте SignalR: контроллер (даже синхронный) возвращает вьюху, js-клиент уже инициирует получение долговычисляемых данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 07:07 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
Petro123NickRenziglov, Смысла большого так делать нету. Клиент на ajax тебя и так асинхронно ждет. Либо старый добрый ajax, но явно не то, что вы вы написали. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 07:17 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
NickRenziglovВсе эти клиенты хранят загруженные экземпляры справочников.значит вы грузите все справочники. А надо только на окно с которым работают. Ведь только в вашем проекте запрос к базе 20 сек. NickRenziglovУважаемый Petro123. Меня интересуют только решения с асинхронным контроллером. Дак вас никто не подержал с этим решением) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 08:23 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
KusanagiPetro123NickRenziglov, Смысла большого так делать нету. Клиент на ajax тебя и так асинхронно ждет. Либо старый добрый ajax, но явно не то, что вы вы написали. Почему? На onLoad логина странички запрос с каллбэком. При ответе через 20 сек. будет событие в js. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 08:25 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
KusanagiSignalR Боюсь что у него не чат с уведомлениями от сервера, а однократная "прогрузка". Но могу ошибаться. Автор не колется на архитектуру. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 08:29 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
NickRenziglovХочу заставить код контроллера вернуть вью, но оставить за собой некий долгоиграющий процесс в отдельном потоке Ты не хочешь этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 08:57 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
правильно ли я понимаю что на каждый login надо освежать данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 10:58 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
handmadeFromRuправильно ли я понимаю что на каждый login надо освежать данные?вероятно и каждый коммит соседа. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 11:05 |
|
Асинхронный контроллер
|
|||
---|---|---|---|
#18+
NickRenziglovХочу заставить код контроллера вернуть вью, но оставить за собой некий долгоиграющий процесс в отдельном потоке. Ну так и запускай его в отдельном потоке (вообще-то делать это тупо в лоб, в процессе веб-приложения нехорошо, т.ч. лучше делать через что-нибудь типа Hangfire или Quartz в отдельном процессе). А async/await - он ведь совершенно для другого задуман. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2018, 22:38 |
|
|
start [/forum/topic.php?fid=18&fpage=23&tid=1355333]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 162ms |
0 / 0 |