win32: нужно сделать общение между процессами. как?

NataNata

допустим, у меня есть программы-клиенты и есть программа-агент на одном компе. Каждый клиент дает запросы агенту, тот что-то с ними делает-отправляет серверам-неважно, и после того, как агент получит обработанный запрос, агент должен дать понять клиенту-автору, что его запросы обработаны и передать их клиенту. Причем запросы могут быть зело объемными и их может быть немало.
Нужно организовать общение между клиентом и агентами.
1) Что пришло в голову: можно сделать общение с помощью Post\SendMessage, socketов, named pipe-ов, global\local heapов, даже с помощью просто файлов на жестком диске или локального ftp-сервера О_о. Какие плюсы и минусы у каждого из предложенного способа для данной цели?
2) как еще можно наладить общение такого сорта?

poi1981

>Какие плюсы и минусы у каждого из предложенного способа для данной цели?
это на курсовую потянет по идее. а то и на диплом

kokoc88

У обычных файлов только минусы: скорость работы, удаление ненужных, совместный доступ.
В SendMessage/PostMessage/PostThreadMessage ввинде нельзя запихать много данных, плюс ко всему будут различные ограничения, можно поботать WM_COPYDATA.
Пайпы эффективны для редиректа ввода-вывода разных процессов, и они весьма просты в использовании.
Сокеты эффективны для передачи данных по сети, не стоит их использовать для передачи данных в пределах одного компьютера.
File mapping & shared memory - наиболее эффективный способ взаимодействия между процессами.

maggi14

> Сокеты эффективны для передачи данных по сети, не стоит их использовать для передачи данных в пределах одного компьютера.
Зато это плохоскалабельно
в смысле, неиспользование сокетов плохоскалабельно. сами сокеты очень даже хорошо скалабельны

Ivan8209

> У обычных файлов только минусы: скорость работы, удаление ненужных, совместный доступ.
В операционных системах уже есть SAFT.
> Сокеты эффективны для передачи данных по сети,
> не стоит их использовать для передачи данных в пределах одного компьютера.
Скажи это тов. Венеме с кодлой, а также мускулистым и постгресовым разработчикам.
---
...Я работаю антинаучным аферистом...

Ivan8209

> скалабельны
Надеюсь, ты помнишь, что в русском языке принято говорить "масштабируемо."
---
...Я работаю антинаучным аферистом...

kokoc88

Зато это плохоскалабельно
Какой вопрос, такой и ответ. Например, у меня была задача раскодирования нескольких mp3 параллельно только средствами винды. Оказалось, что это можно сделать лишь с помощью запуска отдельного процесса на один файл. Соотв-но данные туда-сюда гонялись через shared memory. Конечно, звук успеет пройти и через loopback, но такое решение всё равно менее эффективно. Просто мне стоило добавить в плюс сокетам, что приложение будет легко перевести на многомашинное.

Landstreicher

> это на курсовую потянет по идее. а то и на диплом
Ни фига не потянет.
Оставить комментарий
Имя или ник:
Комментарий: