|
Правильная замена функции Вопрос() в управляемом приложении | ☑ | ||
---|---|---|---|---|
0
ssalikoff
08.02.16
✎
17:30
|
На сервере выполняется сложная операция, в ходе которой время от времени нужно у пользователя запрашивать дополнительную информацию. То есть клиент должен контролировать и управлять процессом на сервере.
В обычном приложении никаких проблем не было — всегда можно было задать Вопрос() пользователю. А как быть в управляемом приложении? Какова правильная методика решения подобной задачи? Я вижу такое решение: на сервере выполняется операция, доходит до вопроса, текущий контекст выполнения запихивается во временное хранилище и выполняется возврат на клиент. На клиенте происходит обработка вопроса и повторный вызов серверной функции, которая вынимает контекст выполнения из временного хранилища и продолжает работу. Решение мне не нравится, так как приходится постоянно гонять данные туда-сюда из временного хранилища. Есть ли более "правильное" решение? |
|||
1
FIXXXL
08.02.16
✎
17:33
|
ответить на все вопросы ДО запуска сложной операции
|
|||
2
Господин ПЖ
08.02.16
✎
17:34
|
>Есть ли более "правильное" решение?
какие "более правильные"? на клиента все равно надо выныривать |
|||
3
Провинциальный 1сник
08.02.16
✎
17:40
|
Кушайте кактус и благодарите отцов-основателей за красивую облачную мечту 1с.
|
|||
4
MaxS
08.02.16
✎
17:42
|
Выполнить сложную операцию два раза. Первый проход фиктивный для сбора вопросов от клиента, потом окончательный.
Либо запускать процесс в толстом клиенте )) |
|||
5
Serginio1
08.02.16
✎
17:47
|
||||
6
ssalikoff
08.02.16
✎
18:37
|
(2) Конечно, выныривать нужно. Никуда от этого не деться. Вот только контекст терять не хочется. Можно ли как-нибудь организовать с помощью фонового задания? Чтобы фоновое задание и клиентский процесс общались между собой через какой-нибудь буфер, оставляя там друг для друга сообщения?
|
|||
7
Господин ПЖ
08.02.16
✎
18:45
|
>Вот только контекст терять не хочется.
увы... меняйте логику тогда - 1с-ый сервер работает по "отдал и забыл" |
|||
8
Asmody
08.02.16
✎
18:49
|
(7) любой stateless сервер работает по принципу "отдал и забыл"
|
|||
9
Cyberhawk
08.02.16
✎
19:45
|
В (4) предложение через серию фиктивных вопросов понравилось
|
|||
10
Cyberhawk
08.02.16
✎
19:46
|
Ну и (1), конечно же, как предпосылка
|
|||
11
Смотрящий
08.02.16
✎
20:38
|
ндяяя ... (8) вон про сервер начал рассказывать; основатели звездят про "отказ от модальности"; с клиента повесить callback на сервер невозможно в модели v8; уф - кастрированная реализация "окно в окне" браузера, без поддержки единого стандарта.
Клиентов 1С, клиентов Карл!, аж 4 штуки. Это не клюшки хаффно мамонта, это снеговик нереальная подделка под программу. А уж "ферма серверов на 1С" с рекламного ролика партнетки, это ваще за гранью |
|||
12
su_mai
08.02.16
✎
20:42
|
(0) Какую задачу решаете, если не секрет?
|
|||
13
Garykom
гуру
08.02.16
✎
20:58
|
если лень выныривать
но нафуя тогда нырять? на клиенте все делайте и не лезьте на сервер не для вас он |
|||
14
EvgeniuXP
08.02.16
✎
21:16
|
(0) не вижу проблем, здесь тоже можно спокойно выполнять код с вопросами.
|
|||
15
EvgeniuXP
08.02.16
✎
21:17
|
(0) щас можно всё круче делать, не то что раньше в 8.1 :)
|
|||
16
ssalikoff
08.02.16
✎
21:49
|
Конкретной задачи нет, моё любопытство чисто теоретическое. А когда придёт время решать, хочу знать, как правильно действовать. Хотя, как я теперь вижу, красивого решения нет. Остаётся ждать, когда 1С реализует что-то вроде web-сокетов.
|
|||
17
Drac0
08.02.16
✎
22:01
|
(16) Вот представь, дали такую возможность. И тупые 1С-ники повставляли вопросов в процедуры расчета движений документов. А потом кто-то запилил над этим групповой пересчет движений или перепроведение, запускает это регламентным заданием или еще как. И что получим в итоге?
Поэтому говн*кодить 1с-никам должно быть трудно, они должны страдать в этот момент. |
|||
18
ssalikoff
08.02.16
✎
22:06
|
(17) Ну это очень спорный вопрос. Должна ли среда ограничивать, удерживать программиста от его же собственных ошибок? Смотря на кого ориентироваться. Если на продвинутых, то ответ будет один, если на новичков — то другой. На кого 1С ориентируется — лично мне неизвестно.
|
|||
19
Drac0
08.02.16
✎
22:13
|
(18) Над системами часто работают больше одного программиста. И этот код будет граблей для себя через год, либо для последователя.
|
|||
20
su_mai
08.02.16
✎
22:48
|
(17) Борьба с модальностью частично решает проблему "вопросов" в серверном коде.
Другое дело, желательно реализовать некий "контекст синхронизации" между сервером и клиентом, что бы можно было не возвращаясь с сервера отображать на клиенте состояние процесса обработки данных. |
|||
21
Diman000
08.02.16
✎
22:59
|
По-моему, надо просто задачу нормально поставить. И сделать грамотную декомпозицию с т.з. непосредственной технической реализации.
С трудом представляю что это за "сложная операция" такая, которая, видимо, весьма продолжительна по времени и при этом должна регулярно спрашивать пользователя "что делать дальше". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |