Как два приложения / процессы могут общаться через COM? - PullRequest
2 голосов
/ 01 сентября 2010

Я ищу способ облегчить сложность передачи данных из одного приложения / процесса в другое.

Говорят, что он лучше, чем UDP или TCP, для связи между процессами в одной и той же ОС (Windows XPздесь).

Можете ли вы предоставить основной код, иллюстрирующий это?

Ответы [ 3 ]

1 голос
/ 01 сентября 2010

Ну да, COM поддерживает удаленные вызовы процедур для COM-сервера вне процесса. Вы делаете вызов от клиента, он выполняется в другом процессе, как если бы он был вызван внутри этого процесса. Фрагмент кода не имеет особого смысла, потому что он выглядит точно как обычный вызов функции.

Для выполнения этой работы вам необходимо позаботиться о достаточном количестве сантехники и конфигурации. Обычно вам нужна прокси / заглушка DLL, которая помогает маршалировать аргументы вызова функции. Обычно они генерируются автоматически из IDL, который вы пишете, который описывает интерфейсы. Если аргументы, которые вы передаете, «необычны», вам может потребоваться написать собственный маршаллер. Этого обычно легко избежать, не пропуская непрозрачные указатели или порции данных переменного размера.

Visual Studio может выполнять многие из этих функций автоматически, ATL очень полезен. Непреднамеренно делать что-то неправильно, безусловно, намного сложнее. Ожидайте несколько месяцев, чтобы набрать скорость, если вы никогда не делали этого раньше. Получить хороший учебный материал может быть сложно, это устаревает. Такие вещи делаются в управляемых средах в наши дни. Гораздо проще автоматически сгенерировать необходимые прокси.

1 голос
/ 01 сентября 2010
1 голос
/ 01 сентября 2010

взгляните на boost.Interprocess , чтобы получить простой способ связи

...