Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
7-11501
frum
2002-08-19 09:53
2002.11.04
WIN XP - процессы


3-11123
Dr. Well
2002-10-16 16:30
2002.11.04
Сумма в QReport


1-11213
Zergling
2002-10-25 07:09
2002.11.04
TDateTime,SmallInt из D4 в D7 (чтение из типизированного фйла)


14-11415
strong
2002-10-12 16:57
2002.11.04
Куда же его спрятать?


14-11394
$hade
2002-10-15 13:48
2002.11.04
Бойцовский клуб




   Наверх