Показать сообщение отдельно
Старый 30.05.2019, 20:10   #12  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
Предположим у нас есть RunBaseBatch.
Он делает что-то тяжелое. Мы конечно же хотим сделать так, чтобы он мог работать на пакетном сервере.
Но этот класс забирает данные из какого-нибудь файла, который находится на клиенте.

Как и куда правильно вставить действия, которые должны выполняться на клиенте?

Сейчас правильный способ видится таким:
* разбить процесс на два runBaseBatch класса: первый будет иметь свойство RunOn=Client, второй - RunOn=Server
* первый в методе run должен будет выполнить клиентские действия, создать второй класс на сервере и передать ему параметры и данные

Но что-то как-то слишком сложно. Очень напоминает overprogramming.

Может существует другой способ?
Тяжелое, не тяжелое, а действия принципиально те же. Хватаем и тащим. И табуретки и пианино.

Клиентом пишем в базу. Можно при желании уменьшить обращения но это уже оптимизация редко нужная. Временная DB таблица или staging если нужна история.

Сервер берет из базы. В пакетнике или нет, не так важно.

Смысла жонглировать классами - не вижу. Практически всегда вдруг возникает требование видеть историю или статус валидации, а это staging. А там где staging все приходит к ParmId и Line Status и может еще пара параметров типа даты и пр.
За это сообщение автора поблагодарили: mazzy (2).