Двусторонняя связь с использованием Cromis IPC - PullRequest
4 голосов
/ 16 марта 2012

Я скачал и поиграл с компонентами Cromis IPC от Iztok Kacin.

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

Я вполне могу отправить сообщение от клиента на прослушивающий сервер, но я не могу отправить сообщение обратно клиенту, если оно не является ответом.

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

Ответы [ 3 ]

5 голосов
/ 17 марта 2012

Я являюсь автором компонентов, и, как другие уже говорили вам, в настоящее время нет возможности установить двустороннюю связь. Причина проста в том, как работают именованные каналы. Было бы очень сложно поддерживать постоянную связь между клиентом и сервером, и, честно говоря, IPC не об этом. Но так как бывают случаи, когда вам необходимо уведомить о наличии новых данных, я думаю о применении независимого механизма сигнализации. Таким образом, сервер может уведомить клиента, что для него что-то есть. Клиент тогда получит доступ к данным так же, как и сейчас. Прямо сейчас я выступаю за реализацию этого в качестве совершенно отдельного компонента, который затем будет легко использоваться вместе с моим МПК.

Следите за блогом, так как я опубликую его там, если я решу это сделать.

5 голосов
/ 16 марта 2012

Вам понадобится сервер и клиент с обеих сторон.

0 голосов
/ 28 мая 2014

Краткий ответ:

Cromis IPC является реализацией именованных каналов.Клиент отвечает за отправку набора команд, который должен быть определен как протокол для конкретного приложения.Соответствующий сервер слушает клиентов и выступает в качестве процессора для обработки этих протокольных запросов.В вашем случае вам нужна двусторонняя связь, поэтому вы должны создать клиент и сервер в обоих процессах с двумя протоколами.

Длинный ответ:

Вы можете использовать Cromis IPC, чтобы сделать работу.Как я уже описал выше, вы должны сами определить два протокола приложения и написать клиентов протокола и процессоров протокола.Это замечательная работа.

Недавно я столкнулся с Apache Thrift .Apache Thrift стремится обеспечить высокопроизводительную инфраструктуру IPC.Одна из фантастических особенностей Apache Thrift заключается в том, что он может автоматически генерировать большую часть кода для IPC.И он поддерживает Delphi.

Вы просто должны определить протоколы для конкретного приложения в файле спецификации.Thrift сгенерирует для вас соответствующий код клиента и процессора.Также поддерживается не только Named Pipe, вы можете выбирать сокеты или другие транспортные реализации.Это действительно стоит попробовать.

...