Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.01.2010, 08:09
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 11  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
А отчего так?
Свой собственный бинарный формат будет быстрее и экономичнее, чем AMF и уж тем более json + gzip (с фига ли посимвольный JSON будет быстрее нативного ByteArray?).

Старый 18.01.2010, 11:04
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 12  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
посмотрите в сторону google protobuf
тут мои эксперименты., если заинтерисует, есть больше.. пиши в личку.
__________________
Отряд Котовскага

Старый 18.01.2010, 14:54
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 13  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Цитата:
Сообщение от etc Посмотреть сообщение
Свой собственный бинарный формат будет быстрее и экономичнее, чем AMF и уж тем более json + gzip (с фига ли посимвольный JSON будет быстрее нативного ByteArray?).
Мой ответ относится к серверной части, обычно она шлет дохренище данных клиенту, а не наоборот...
__________________
Блог, Twitter
Брюзга.

Старый 18.01.2010, 16:12
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 14  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от mayakwd Посмотреть сообщение
Мой ответ относится к серверной части, обычно она шлет дохренище данных клиенту, а не наоборот...
Типа раззиповать и распарсить дофигища строковых данных средствами AS3 будет быстрее? Protobuf - интересный формат, но некоторые его структуры в AS3 нечем обеспечить (типа все тех же енумов), и записать его будет чуть дольше на клиенте, а с точки зрения сервера - лучше не придумаешь
__________________
Hell is the possibility of sanity

Старый 18.01.2010, 16:25
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 15  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Protobuf - интересный формат, но некоторые его структуры в AS3 нечем обеспечить (типа все тех же енумов), и записать его будет чуть дольше на клиенте, а с точки зрения сервера - лучше не придумаешь
просто не надо создавать .proto данные с энумами.. вполне достаточно (99%) int, string, boolean, составной message и array.
Другая проблема что само message несериализованно, но это лечится вводом поля alias..
__________________
Отряд Котовскага

Старый 18.01.2010, 16:54
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 16  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
а с точки зрения сервера - лучше не придумаешь
Чего-то я поковырял-поковырял и решил придумать лучше =)
Под игровые нужды.
Пока мысли такие - первые байты - short, являющийся номером команды и определяющий, как смотреть на оставшиеся байты.
Или вообще сделать нечто вроде бинарного дерева команд (как бы наследующих друг-друга) и читать 2-3 Boolean (и так двигаться по дереву влево-вправо), а после этого "хвост" сообщения уже будет однозначно обработан
Или это не так делается? Посоветуйте, кто знает =)
__________________
...вселенская грусть

Старый 18.01.2010, 18:01
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 17  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от mayakwd Посмотреть сообщение
Мой ответ относится к серверной части, обычно она шлет дохренище данных клиенту, а не наоборот...
Ну да, т. е. клиент у нас будет тупить на посимвольном парсинге этого самого JSON.

Старый 18.01.2010, 19:11
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 18  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от Котяра Посмотреть сообщение
просто не надо создавать .proto данные с энумами.. вполне достаточно (99%) int, string, boolean, составной message и array.
Другая проблема что само message несериализованно, но это лечится вводом поля alias..
Ну и еще проблема - а что делать с 64-битными числами? Number их полностью не опишет, точности не хватит, а писать только ради этого специальный класс имитирующий работу 64-битного числа... ну даже не знаю...

EDIT:
Ксати, решил более вплотную этим занятся Посмотрел исходники AS библиотеки... ну, прямо скажем, можно было бы и лучше... калька с Джавы + недоделаная. Человек не знал про свойство endian у ByteArray ну и еще по мелочам, типа, сам написал упаковку int, в то время, как в AMF она точно так же работает
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 19.01.2010 в 00:01.
Старый 18.01.2010, 23:09
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 19  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Цитата:
Сообщение от etc Посмотреть сообщение
Ну да, т. е. клиент у нас будет тупить на посимвольном парсинге этого самого JSON.
не будет, проверено на личном опыте. клиенту отсылается немного, если кипа данных, то это обычно единоразово - потерпеть может.

со стороны серверной части - отсылается же не одному клиенту и сериализация в данном моменте лучше подходит та что я описал, так что все зависит от случая.

вообще лучше использовать как уже вами подмечено свой протокол.
__________________
Блог, Twitter
Брюзга.

Старый 19.01.2010, 09:21
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 20  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Ну и еще проблема - а что делать с 64-битными числами? Number их полностью не опишет, точности не хватит, а писать только ради этого специальный класс имитирующий работу 64-битного числа... ну даже не знаю...

EDIT:
Ксати, решил более вплотную этим занятся Посмотрел исходники AS библиотеки... ну, прямо скажем, можно было бы и лучше... калька с Джавы + недоделаная. Человек не знал про свойство endian у ByteArray ну и еще по мелочам, типа, сам написал упаковку int, в то время, как в AMF она точно так же работает
Есть проблемы конечно.. в код сериализации AS3 я практически не лазил, сделал только сериализацию самих мессаждей ( в моём блоге устаревшый код - есть пофиксенный, если надо выложу..)
другой вопрос, что 64- битный double, 64int, enum, etc. совершенно не обязательно использовать при создании .proto на конкретном проекте. есть способы как обойтись без этого.. ( тысячи их) можно для этих целей вообще работать только с protobuf lite (могу ошибаться, но там, кажется, уменьшенный набор типов)
Большая просьба! если будут интересности по PB - как нибудь мне маякните! очень интересна мне эта тема.. пока правда отложена на неопределённое время..

Добавлено через 8 минут
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Чего-то я поковырял-поковырял и решил придумать лучше =)
Под игровые нужды.
Главный минус: абсолютная нерасширяемость протокола.
Тут какбы есть 2 пути - использовать раздутый, но отлично расширяемый amf - подобный протокол
либо писать жосткий и мегаоптимизированный.
если протокол написан 1 раз и больше меняться не будет, тогда лучше 2 вариант, если изменения будут, или хотя бы возможны, нужно смотреть в сторону более расширяемого варианта сериализации.
а так можно все возможные данные зашить в пару байт и проверять кэйсом (ифом)
if (a==1) значит смотрим заранее загруженные варианты данных с id = 1.. итп. (утрирую)..т.е. именнованные по id события, с минимальным количеством данных, или вообще без них...
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Пока мысли такие - первые байты - short, являющийся номером команды и определяющий, как смотреть на оставшиеся байты.
Или вообще сделать нечто вроде бинарного дерева команд (как бы наследующих друг-друга) и читать 2-3 Boolean (и так двигаться по дереву влево-вправо), а после этого "хвост" сообщения уже будет однозначно обработан
Или это не так делается? Посоветуйте, кто знает =)
кстати PB практически так и работает.
т.е. с сервера приходит набор данных(для примера все данные int)
1.10.2.20.3.30 - сериализуем:
1 - таг типа сообщения = 10 ( alias): - соответствует, например клаcсу PointMessage
в нём таг 2 - это координата x = 20
таг= 3 - координата y = 30
- создается pointMessage {alias:10, x: 20, y:30}, у которого кстати можно прописать еще и нужные методы - я делал некий перекрываемый для всех Message - function changeModel()
минусы - отсылка лишних байт тагов, казалось бы можно без них обойтись.. передавать 10.20.30 - но в PB заложена возможность не посылать все поля, что в принципе удобно, и передача массивов, здесь без тагов не обойтись..
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 19.01.2010 в 10:22.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
AMF , socket
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.