у нас есть сервисное выполнение окон, и у нас также есть консольное приложение, которое мы используем для конфигурирования этого сервиса, у нас также есть опция видеть, что некоторый журнал зарегистрирован.
Очень ужасная вещь с этим состоит в том, что эта коммуникация сделана текстовым файлом, консольное приложение пишет в текстовый файл, и сервис читает его и наоборот.
Что Вы использовали бы для этой коммуникации? TCP/IP не является опцией, потому что консольное приложение будет использоваться для локального рабочего сервиса только.
Windows API SendMessage должен быть способом пойти?
спасибо!
Общая память? См. Здесь здесь для статьи на кодовом вызове, вот другая статья Fastipc на том же сайте. Существует входная запись в блоге о том, как использовать файл файл памяти для совместного использования через обертку.
Надеюсь, это поможет, С уважением, Том.
Вы запускаете меньше риска тупиков, если вы используете неблокирующие методы сообщения сообщения. PostMessage
, или SendNotifyMessage
лучше SendMessage
, потому что они не блокируют абонент.
Но они зависят от службы, имеющей ручку окна. Это?
Вы также можете использовать сообщение WM_COPYDATA , чтобы пройти больше, чем просто wparam a lparam. Если вы используете это сообщение с PostMessage, вам нужно быть осторожным, чтобы не освободить память, пока приемник с ним не будет. Это безопасно использовать sendmessage для wm_copydata.
Я бы рекомендовал WCF как первое, что следует учитывать для всех сообщений на Windows, если использовать .net как созданный для такого рода вещей и относительно простой в использовании. Поскольку вы исключаете TCP, я бы посоветовал использовать Named Pipes Binding.
Для внутримашинной связи также доступно несколько оконных коммиксов apis. Наименованные трубы (как уже упоминалось), MailSlots, Shared Memory (Memory Mapped files) и др.
Я бы предложил использовать именованные трубы либо с WCF, либо с родным языком.