Консольное приложение для общения с сервисом окон

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

Очень ужасная вещь с этим состоит в том, что эта коммуникация сделана текстовым файлом, консольное приложение пишет в текстовый файл, и сервис читает его и наоборот.

Что Вы использовали бы для этой коммуникации? TCP/IP не является опцией, потому что консольное приложение будет использоваться для локального рабочего сервиса только.

Windows API SendMessage должен быть способом пойти?

спасибо!

5
задан Josh Lee 29 January 2010 в 09:23
поделиться

3 ответа

Общая память? См. Здесь здесь для статьи на кодовом вызове, вот другая статья Fastipc на том же сайте. Существует входная запись в блоге о том, как использовать файл файл памяти для совместного использования через обертку.

Надеюсь, это поможет, С уважением, Том.

0
ответ дан 14 December 2019 в 08:50
поделиться

Вы запускаете меньше риска тупиков, если вы используете неблокирующие методы сообщения сообщения. PostMessage , или SendNotifyMessage лучше SendMessage , потому что они не блокируют абонент.

Но они зависят от службы, имеющей ручку окна. Это?

Вы также можете использовать сообщение WM_COPYDATA , чтобы пройти больше, чем просто wparam a lparam. Если вы используете это сообщение с PostMessage, вам нужно быть осторожным, чтобы не освободить память, пока приемник с ним не будет. Это безопасно использовать sendmessage для wm_copydata.

1
ответ дан 14 December 2019 в 08:50
поделиться

Я бы рекомендовал WCF как первое, что следует учитывать для всех сообщений на Windows, если использовать .net как созданный для такого рода вещей и относительно простой в использовании. Поскольку вы исключаете TCP, я бы посоветовал использовать Named Pipes Binding.

Для внутримашинной связи также доступно несколько оконных коммиксов apis. Наименованные трубы (как уже упоминалось), MailSlots, Shared Memory (Memory Mapped files) и др.

Я бы предложил использовать именованные трубы либо с WCF, либо с родным языком.

6
ответ дан 14 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: