Последовательность Corba<октет> намного медленнее, чем использование сокета
Вопрос
У меня есть вопрос, связанный с корбой.
В моем приложении Java я использую данные последовательности TypedEF;
Теперь я поигрался с этим вектором данных.Если я прав с последовательности спецификации CORBA, либо будет преобразована в XS: Base64Binary или XS: Hexbinary.Это должен быть непрозрачный тип, поэтому в нем не должно использоваться никакой сортировки.
Я пробовал разные стили IDL:
void Get(out Data d);
Data Get();
но я вижу, что перемещение данных с помощью Corba происходит намного медленнее, чем непосредственное использование сокета.Меня устраивают небольшие накладные расходы, но мне кажется, что данные все еще упорядочены.
Нужно ли мне как-то настроить свой шар для подавления маршаллинга или я что-то пропустил.
Решение
1) Нет, ничего настраивать не нужно.2) Вы ничего не пропустили.
Поскольку CORBA сортирует все, также сортируется и последовательность октетов. Он всегда маршалируется так, как есть (как последовательность байтов)..Маршалинг не означает, что он должен каким-то образом измениться.Кодировка CDR используется каждый раз для сериализации объекта.Этот процесс называется маршаллингом.
Кстати, вы используете Java-сферу SUN или JacORB? Поскольку каждый ORB может иметь разные или дополнительные настройки свойств.(Но этого не должно было быть...)
Определение Octect в спецификации CORBA 3.0.3:«Значения октетной константы вне диапазона 0–255 вызовут ошибку во время компиляции.[...] Тип октета представляет собой 8-битную величину, которая гарантированно не подвергается никакому преобразованию при передаче системой связи».
Изменения в курсив