Протокол для Proxy
От: Hard_Club  
Дата: 22.07.13 08:18
Оценка:
Есть Proxy, который оборачивает часть проекта, написанного на скриптовом языке. Язык может возвращать результаты вызовов только в виде строк. Вызовов несколько, и все предназначены для сбора некоторой текстовой информации. Проблема в том, что разные вызовы возвращают разные коллекции, а у возвращаемого значения есть ограничение по объему.

Вопрос в том, как архитектрурно формировать коллекции так, чтобы в сериализованном виде они не превосходили некоторый размер? Коллекции можно формировать за несколько вызовов.
Re: Протокол для Proxy
От: Nikolay_Ch Россия  
Дата: 22.07.13 08:53
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Вопрос в том, как архитектрурно формировать коллекции так, чтобы в сериализованном виде они не превосходили некоторый размер? Коллекции можно формировать за несколько вызовов.

Возвращать все, что влезет, и признак "читай еще"?

Вообще — здесь надо наложить ограничение на размер одного элемента коллекции — он должен быть не больше окна передачи.
Re[2]: Протокол для Proxy
От: Hard_Club  
Дата: 22.07.13 09:49
Оценка:
H_C>>Вопрос в том, как архитектрурно формировать коллекции так, чтобы в сериализованном виде они не превосходили некоторый размер? Коллекции можно формировать за несколько вызовов.
N_C>Возвращать все, что влезет, и признак "читай еще"?

N_C>Вообще — здесь надо наложить ограничение на размер одного элемента коллекции — он должен быть не больше окна передачи.


хороший совет. но элемент нужно будет еще сериализировать. а что если я работаю с большим количеством мелких?
Re[3]: Протокол для Proxy
От: Nikolay_Ch Россия  
Дата: 22.07.13 10:10
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>хороший совет. но элемент нужно будет еще сериализировать.

Так смотреть на размер в сериализованном виде. Это можно сделать или физически сериализовав элемент или написать формулу, по которой можно будет высчитать размер элемента.

H_C>а что если я работаю с большим количеством мелких?

ну так я вроде написал: возвращать все, что влезет и признак "читай еще". Как вариант, сериализовывать все сразу, далее архивировать, преобразовывать через BASE64 и возвращать кусками с тем-же признаком. Можно и не архивировать, а возвращать всегда кусками определенного размера — из общего массива символов, куда были сериализованы все элементы коллекции.
При возврате кусками определенного размера признаком окончания передачи будет любой кусок менее размера окна. Так примерно организовано в протоколе TFTP.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.