Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.04;
Скачать: CL | DM;

Вниз

Передача больших по значению параметров на удаленные COM-сервера.   Найти похожие ветки 

 
Dok_3D ©   (2002-10-25 13:22) [0]

Господа, здравствуйте.
Вопрос про передачу больших по объему параметров на удаленные COM-сервера.
Проблема вот в чем:
Есть, например, такой метод сервера
AppServer.SetBigProperty(const vaName, vaValue : OleVariant);

Так вот, если параметр vaValue имеет небольшое значение (0.1, 0.5, 1 мегабайт), то все вроде как хорошо, на быстродействии не отражается.
Но если речь идет о размере в 10, 20, 30 мегабайт, то передача этого параметра занимает о-о-очень большое время, несоизмеримо большее , чем копирование файла такого-же размера по сети.
Я, конечно, понимаю, что маршалинг требует ресурсов процессора, но все - же...

Вопрос: может, есть какие-нибудь механизмы(форматы) передачи таких больших параметров на удаленные тСОМ-сервера ? Хотя бы, чтобы скорость передачи значения параметра была была близка к скорости копирования файла такого-же размера по сети.


 
Дмитрий Баранов ©   (2002-10-25 13:30) [1]

Если я ничего не путаю, в COM используется UDP - отсюда и такая разница... Но могу и лохануться ( книжки нужной под рукой нету ).


 
asmith   (2002-10-25 13:53) [2]

Тут есть еще один более неприятный момент - COM-сервер при приеме данных распределяет для них соответствующего размера буфер и если клиентов несколько, памяти может потребоваться очень много. Выход - отказ от передачи данных через SafeArray (а именно эта метода и используется) и переход на потоковые технологии (IStream) или COM Pipes (поддерживает W2k и старше). Об этом можно почитать в сентябрьском номере MSDN Magazine в статье "Marshaling Your Data: Efficient Data Transfer Techniques Using COM and Windows 2000". Другое дело, что эти методы непросто использовать из Delphi.


 
Dok_3D ©   (2002-10-25 15:35) [3]

Читаю статью приведенную статью ... Пока башка трещит.
Может быть, когда я дочитаю, еще кто-нибудь дельную мысль подкинет ?



Страницы: 1 вся ветка

Текущий архив: 2002.11.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
4-11560
Igor_i
2002-09-23 13:37
2002.11.04
Как скопировать в буфер имена всех файлов и папок корня CD


1-11276
bearoman
2002-10-23 12:00
2002.11.04
Нужены компоненты графические (датчиков, градусников)


14-11485
Undert
2002-10-16 18:45
2002.11.04
Приколитесь ИЗВРАТУ! 3D Движок на JavaScript


1-11150
Ерик
2002-10-24 12:32
2002.11.04
НЕ РАБОТАЕТ Synchronize в потоке запущенном из ДЛЛ !


1-11251
Semion
2002-10-23 08:24
2002.11.04
Подскажите где найти