Показать сообщение отдельно
Старый 01.07.2024, 12:51   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Lankey Посмотреть сообщение
Что я не очень понимаю : в чем сложность передать даже класс между клиентом и сервером по значению (если его члены -простые типы). Можно же ,мне кажется, SysPackable сделать(то есть , статус запаковать в контейнер и передать). заимплементировать. И если это так, то почему в тот же textBuffer не добавили pack/unpack для удобства? Наверное, вопрос риторический, но вдргу есть объяснение тому, что не стараются все делать упаковываемым и передаваемым для оптимизации перформанса (=чтобы не дергать объект на другом tier)
1. На уровне ядра в АХ нет возможности сериализовывать (упаковывать) и десереализовывать (распаковывать) объекты. Т.е. (условно) по умолчанию методы pack / unpack не присутствуют на каждом объекте системы. Т.о. для каждого объекта нужно вручную их писать. Так-то Вы правы - делается класс implements SysPackable и создаются вручную методы pack / unpack - и "всего делов".
2. Однако есть ограничение на размер передаваемого буфера между клиентом и сервером. И классы, которые работают с большими массивами данных (тот же TextBuffer) не имеет методы pack / unpack, потому что там может оказаться неконтролируемый размер буфера. Конечно также можно сказать и про Set / Map / List, однако... вот у меня есть пример из жизни, когда слишком большой курсор я сохранял в классе RecordSortedList и ... АОС падал.

В общем - в любом случае - нужно принять как данность - невозможность передавать огромные размеры данных между клиентом и сервером АХ + невозможность создавать копию объекта на другом tier на уровне ядра (т.е. только вручную на Х++)
__________________
Возможно сделать все. Вопрос времени