а когда то давно в германии были айтишники

Модераторы: Вий, Xanf

hellboy
Сообщения: 429
Зарегистрирован: 12 авг 2018, 22:42

а когда то давно в германии были айтишники

Сообщение hellboy » 06 сен 2019, 15:51

Подскажите паттерн для реализации следующего решения:

По кнопке на клиенте стартует на сервере очень долгая синхронная операция: аякс запрос подвешен со статусом пендинг.

Необходимо разбить на 2 операции: первый рест запрос посылает на сервер запрос рест, долгоиграющая задача запускается в виде джоба (но не атлассиановского!) и клиент либо получает регулярно от сервера прогресс операции (что ИМХО предпочтительней) либо клиент от сервера забирает регулярно (по таймауту?) статус прогресса

В асп-дот-нете это делалось одним ключевым словом.

https://docs.microsoft.com/ru-ru/aspnet ... pnet-mvc-4

А в яве?

jabs
Сообщения: 5523
Зарегистрирован: 04 окт 2011, 10:34
ник с it-ru.de: верифицирован
Откуда: 86-78-MEK-L-TR-WI-N

Re: а когда то давно в германии были айтишники

Сообщение jabs » 09 сен 2019, 11:39

Websocket посмотри

dude
Сообщения: 16082
Зарегистрирован: 25 окт 2011, 20:55

Re: а когда то давно в германии были айтишники

Сообщение dude » 09 сен 2019, 15:05

jabs писал(а):
09 сен 2019, 11:39
Websocket посмотри
ага. взять сокет и немножко доработать напильником.
можно, кстати, на ассемблере маленько пописать. будет очень эффективный кот.
Любая машина прослужит вам до конца жизни, если ездить достаточно быстро.

hellboy
Сообщения: 429
Зарегистрирован: 12 авг 2018, 22:42

Re: а когда то давно в германии были айтишники

Сообщение hellboy » 09 сен 2019, 19:35

А мне вот сосед по палате нашептал, что клиент должен дергать тупо по таймауту сервер.

Естественно серверный код нужно превращать в таск, первый запрос на сервер создает таск и возращает клиенту его айди, таск периодически увеличивает счетчик прогресса. Также здесь нужно отдать общее число будущих операций.

далее клиент с определенным промежутком времени (несколько секунд) обращается к серверу (отдельный эндпоинт) и тот возращает текущий прогресс.

Вопрос: где на сервере нужно хранить счетчик? Как его обновлять из таска? Какие будут боттлнеки?

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

Как тогда клиент узнает об окончании операции? Кто кому должен сообщать?

hellboy
Сообщения: 429
Зарегистрирован: 12 авг 2018, 22:42

Re: а когда то давно в германии были айтишники

Сообщение hellboy » 09 сен 2019, 19:36

dude писал(а):
09 сен 2019, 15:05
jabs писал(а):
09 сен 2019, 11:39
Websocket посмотри
ага. взять сокет и немножко доработать напильником.
можно, кстати, на ассемблере маленько пописать. будет очень эффективный кот.
Программирую ассемблерными вставками на жопаскрипт. Дорого.

hellboy
Сообщения: 429
Зарегистрирован: 12 авг 2018, 22:42

Re: а когда то давно в германии были айтишники

Сообщение hellboy » 09 сен 2019, 21:38

jabs писал(а):
09 сен 2019, 11:39
Websocket посмотри
Умри, но не сейчас?

hellboy
Сообщения: 429
Зарегистрирован: 12 авг 2018, 22:42

Re: а когда то давно в германии были айтишники

Сообщение hellboy » 09 сен 2019, 21:53



Мадонна поет о мучениеях программиста, выбравшего вебсокеты. Еще до того, как это стало модным.

Аватара пользователя
sergNN
Сообщения: 2430
Зарегистрирован: 23 сен 2011, 21:50

Re: а когда то давно в германии были айтишники

Сообщение sergNN » 10 сен 2019, 09:01

стандартная задача сложного приложения.
клиент стартует всё что угодно, хоть в асинхронном режиме,
процессы выполняются на сервере, результаты пишется в таблицу task_monitor, task_status, task_error.

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

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

Processor
Сообщения: 15376
Зарегистрирован: 22 сен 2011, 10:21
ник с it-ru.de: верифицирован
Откуда: FFM

Re: а когда то давно в германии были айтишники

Сообщение Processor » 10 сен 2019, 09:46

sergNN писал(а):
10 сен 2019, 09:01
стандартная задача сложного приложения.
клиент стартует всё что угодно, хоть в асинхронном режиме,
процессы выполняются на сервере, результаты пишется в таблицу task_monitor, task_status, task_error.

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

Для монитора делается отдельная закладка (или окно, если многооконное).
+ нормальное решение, для болъшинства видов проэктов, если нет непреодилимого желания вешать себя за яйца на ветке )
Многие люди вольготно чувствуют себя на чужбине, лишь презирая коренных жителей.
Во времена всеобщей лжи говорить правду — это экстремизм.

Вячеслав Викторови4
Сообщения: 3892
Зарегистрирован: 19 май 2015, 17:30

Re: а когда то давно в германии были айтишники

Сообщение Вячеслав Викторови4 » 10 сен 2019, 13:34

Processor писал(а):
10 сен 2019, 09:46
sergNN писал(а):
10 сен 2019, 09:01
стандартная задача сложного приложения.
клиент стартует всё что угодно, хоть в асинхронном режиме,
процессы выполняются на сервере, результаты пишется в таблицу task_monitor, task_status, task_error.

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

Для монитора делается отдельная закладка (или окно, если многооконное).
+ нормальное решение, для болъшинства видов проэктов, если нет непреодилимого желания вешать себя за яйца на ветке )
так делают только колхозники

Ответить