Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
ВнизФормирование пакетов данных Найти похожие ветки
← →
Ajax © (2007-01-29 11:47) [0]Хочется услышать мнение знающих. Как лучше сделать формирование структур (например пакетов сетевых протоколов) с некоторым набором полей (могут быть переменной длины)? То есть нужно заполнить поля и получить на выходе массив байт.
Я сделал класс-буфер, имеющий метод push_back, куда передается очередное поле структуры. Когда все поля заPUSHены, получаем сформированную структуру в виде массива. Но как-то некрасиво получается IMHO.
← →
tesseract © (2007-01-29 12:00) [1]
> получаем сформированную структуру в виде массива. Но как-
> то некрасиво получается IMHO.
Почему некрасиво? Только ещё хорошобы врерёд ней размерность её посылать.
← →
Джо © (2007-01-29 12:03) [2]По мне, так тоже — вполне нормальный ООП подход. Имеем данные и операции над ними в одном флаконе. Инкапсуляция-с! :)
← →
Сергей М. © (2007-01-29 12:04) [3]
> как-то некрасиво получается IMHO
У Борланда компоненты (да и не только) сплошь и рядом реализуют LoadFromStream/SavetoStream. Считаешь, что тоже некрасиво ?
← →
Ajax © (2007-01-29 12:48) [4]Ну вы меня успокоили :-) Спасибо!
Я думал вдруг да есть какое стандартное средство (C++ и Java).
← →
tesseract © (2007-01-29 12:58) [5]
> Я думал вдруг да есть какое стандартное средство (C++ и
> Java).
XML - стандартнее для передачи абстрактного вида структур не придумаешь.
← →
Alex Konshin © (2007-01-29 14:29) [6]Ну вот буквально один из текущих личных проектов как раз на эту тему.
Там две части - сервис на Delphi и клиент на Java. Протокол бинарный. Да, там поля пишутся один за одним. Поля переменной длины пишутся с указанием этой длины.
В принципе ничего сложного в самом этом выстраивании и чтении данных нет.
Там сложнее правильно организовать буферизацию.
Сервис у меня многопоточный с ассинхронными операциями. К тому же все шифруется.
На мой взгляд, хоть XML и моден нынче, но для таких применений слишком тяжел - неоправданно много затрат на чтение. Да и для случаев, когда двоичных данных слишком много, то на encoding-decoding тоже неоправданно много тратится.
← →
tesseract © (2007-01-29 14:33) [7]
> Alex Konshin © (29.01.07 14:29) [6]
Я и не говорю, что он идеален, самому иногда ломает что-то на нём делать. Но млин "Даёшь XML c OLE " и всё!!!!!
← →
Сергей М. © (2007-01-29 14:37) [8]Нафих тут XML сдался - одному tesseract"у известно)
← →
tesseract © (2007-01-29 15:23) [9]
> Сергей М. © (29.01.07 14:37) [8]
> Нафих тут XML сдался - одному tesseract"у известно)
Одному заказчику :-)
Я не знаю зачем он ему нужен но уж если очень просит......
← →
Ученик чародея © (2007-01-29 15:31) [10]
> Alex Konshin © (29.01.07 14:29) [6]
>
> Ну вот буквально один из текущих личных проектов как раз
> на эту тему.
> Там две части - сервис на Delphi и клиент на Java. Протокол
> бинарный. Да, там поля пишутся один за одним. Поля переменной
> длины пишутся с указанием этой длины.
Во изврат, обычно наоборот.
← →
Alex Konshin © (2007-01-30 00:53) [11]И совсем не изврат. Я бы на вашем месте поостерегся быть настолько категоричным.
Зависит от толщины клиентов и списка поддерживаемых платформ. Не забываем, что помимо Windows есть и другие платформы. Из Java можно сделать далеко не все, особенно удаленно. А если и сделаешь, то неэффективно будет.
В данном случае сервис обеспечивает удаленный доступ удаленных Java клиентов к PerformanceCounters на Windows сервере, а также доступ к файлам.
Java клиенты могут быть на Unix, так что удаленный доступ к WMI или registry не прокатит.
Сервис на Delphi маленький, менее 200K и при работе памяти требует мало.
Так что для каждой задачи свои решения.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c