Цитата:
Сообщение от
Lankey
Что я не очень понимаю : в чем сложность передать даже класс между клиентом и сервером по значению (если его члены -простые типы). Можно же ,мне кажется, SysPackable сделать(то есть , статус запаковать в контейнер и передать). заимплементировать. И если это так, то почему в тот же textBuffer не добавили pack/unpack для удобства? Наверное, вопрос риторический, но вдргу есть объяснение тому, что не стараются все делать упаковываемым и передаваемым для оптимизации перформанса (=чтобы не дергать объект на другом tier)
1. На уровне ядра в АХ нет возможности сериализовывать (упаковывать) и десереализовывать (распаковывать) объекты. Т.е. (условно) по умолчанию методы pack / unpack не присутствуют на каждом объекте системы. Т.о. для каждого объекта нужно вручную их писать. Так-то Вы правы - делается класс implements SysPackable и создаются вручную методы pack / unpack - и "всего делов".
2. Однако есть ограничение на размер передаваемого буфера между клиентом и сервером. И классы, которые работают с большими массивами данных (тот же TextBuffer) не имеет методы pack / unpack, потому что там может оказаться неконтролируемый размер буфера. Конечно также можно сказать и про Set / Map / List, однако... вот у меня есть пример из жизни, когда слишком большой курсор я сохранял в классе RecordSortedList и ... АОС падал.
В общем - в любом случае - нужно принять как данность - невозможность передавать огромные размеры данных между клиентом и сервером АХ + невозможность создавать копию объекта на другом tier на уровне ядра (т.е. только вручную на Х++)