B>2. тупо обменяться адресами в памяти — сервису сказать где объект лежит на клиенте, и наоборот, тогда можно просто привести айди к указателю
Хакерам такой протокол определенно понравится
Как много веселых ребят, и все делают велосипед...
например есть у нас протокол где команда это ObjectcId.Property = Value
мне интересно как можно организовать самый быстрый переход от объекта к его указателю, и на сервере и на клиенте
1. генерировать один GUID, но тогда придется искать каждый айди в таблице на каждую команду
2. тупо обменяться адресами в памяти — сервису сказать где объект лежит на клиенте, и наоборот, тогда можно просто привести айди к указателю что супербыстро, но тут нужен запрос-ответ, а это тормоза
глобальная уникальность будет обеспечиваться уникальностью пары айди процесса(или айпи, или сессии) и адреса в памяти
как компромис — клиент создает объект и шлет его адрес, а сервер помещает его в таблицу, и наоборот
3. выделять доступный один айди как HANDLE в винде, тут доступ быстрый — просто по индексу в массиве, но если объект создается клиентом то нада както обеспечить синхрронизацию с серверйно таблицей, либо опять ждать овтета
мож чтото лучше есть, мне лично нравится идея адреса, тогда не нада на каждую команду лукап делать
4. еще придумал извратный: севрер создает пул объектов заранее и рассылает клиентам пачки доступных адерсов, когда клиент исчерпал пул — он просит новую пачку адресов
это решение просблемы тормозов зарпос-ответа через предварительную аллокацию сразу кучи объектов
ну и тут у нас будет перерасход памяти на сервере
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Здравствуйте, Barbar1an, Вы писали:
B>мне интересно как можно организовать самый быстрый переход от объекта к его указателю, и на сервере и на клиенте
Вы ловите блох. Вы уверены что именно это узкое место вашего сервера?
B>1. генерировать один GUID, но тогда придется искать каждый айди в таблице на каждую команду
cache?
B>2. тупо обменяться адресами в памяти — сервису сказать где объект лежит на клиенте, и наоборот, тогда можно просто привести айди к указателю что супербыстро, но тут нужен запрос-ответ, а это тормоза B> глобальная уникальность будет обеспечиваться уникальностью пары айди процесса(или айпи, или сессии) и адреса в памяти
А еще придётся проверять не лажули прислали в качестве адреса.
B>как компромис — клиент создает объект и шлет его адрес, а сервер помещает его в таблицу, и наоборот
Копромис просто индекс в массиве он же handle.
Здравствуйте, Barbar1an, Вы писали:
B>например есть у нас протокол где команда это ObjectcId.Property = Value B>мне интересно как можно организовать самый быстрый переход от объекта к его указателю, и на сервере и на клиенте
Если у тебя есть сервер и клиент, разделенные пространственно, то любой из твоих вариантов будет занимать 0.00..01% от операции
Поэтому правильный вариант — 1 (использовать GUID), остальное — бред