Связь между двумя Сервисами, работающими в одной системе с использованием C ++ - PullRequest
0 голосов
/ 05 июня 2018

В C ++ у меня есть 2 службы (скажем, службы Windows), которые работают в системе.Очевидно, что оба имеют свои соответствующие EXE-файлы A.EXe & B.EXE.

Если я хочу запросить и получить некоторые данные между этими двумя службами Windows, это можно сделать как вызов функции, передав указатель структуры из 1 службы, а другой сервис заполнит структуру, используя переданный указатель,

Общий заголовочный файл для A & B:

struct Abc
    {
       int a;
    }

Теперь скажите, что служба A отправляет этот объект структуры со своим указателем или в виде передачи по ссылке, вызывая функцию в службе B.EXE.Будет ли этот вызов функции работать для двух служб и могут ли данные передаваться между A & B таким образом?

Или мне нужен механизм IPC, такой как сокеты.

Как лучше всего осуществлять передачу данных между двумя службами, работающими в одной системе

1 Ответ

0 голосов
/ 05 июня 2018

IPC означает «межпроцессное взаимодействие».У вас есть две службы (каждая работает в своем собственном процессе), и вы хотите общаться между ними.Вы абсолютно нуждаетесь в механизме IPC.

Ваш выбор:

  • сокетов (наложение boos::asio сверху было бы отличной идеей)
  • Отображение общей памяти и события сигнализации (не забудьтеиспользовать мьютекс или подобное, и не забудьте установить иерархию блокировок, чтобы вы не получали тупиков).Это будет ограничено одной машиной, но это может быть приемлемо.
  • DCOM (только для Windows, но, похоже, вы все равно ограничены Windows).
  • Некоторые другие пакеты IPC.

Моими личными предпочтениями были бы розетки, но любой из них мог бы подойти.

...