2012-03-16 1 views
4

Iztok Kacin의 Cromis IPC 구성 요소를 다운로드하여 가지고 놀았습니다.Cromis IPC를 사용한 양방향 통신

내 Windows 서비스 및 GUI가 통신 할 수 있도록이 구성 요소 세트를 다운로드했습니다. 그러나 통신은 한 가지 방법 (서버 응답 제외) 인 것으로 보입니다.

클라이언트에서 수신 대기중인 서버로 메시지를 보낼 수는 있지만 응답하지 않는 한 클라이언트에 메시지를 다시 보낼 수있는 것으로 보이지 않습니다.

양방향 통신이 이러한 구성 요소로 달성 할 수 있는지 알고 있습니까? 아니면 GUI와 서비스 응용 프로그램 모두에서 서버와 클라이언트가 필요합니까?

+2

제공된 링크에 대한 의견을 읽어보십시오. – kobik

+0

자주 자주 폴링하지 않는 이유는 무엇입니까? 그런 다음 서버는 아무 것도 말할 필요가 없으면 빈 메시지로 응답하거나 클라이언트에게 말할 메시지가 있으면 전체 응답 메시지로 응답 할 수 있습니다. 이 문제를 해결할 수있는 방법은 TCP/IP를 선택하는 것이 좋습니다. – avra

답변

5

나는 구성 요소의 저자이며 다른 사람들은 이미 양방향 의사 소통을 할 수있는 방법이 없다고 이미 말했기 때문에. 그 이유는 간단합니다. 명명 된 파이프가 작동하는 방식입니다. 클라이언트와 서버간에 영구적 인 연결을 유지하는 것은 매우 복잡 할 것이며 솔직히 IPC는 그것에 관한 것이 아닙니다. 그러나 새로운 데이터를 사용할 수 있다는 사실을 알릴 필요가있을 때마다 독립적 인 신호 메커니즘을 롤링 할 생각입니다. 이 방법으로 서버는 클라이언트에게 뭔가가 있음을 알릴 수 있습니다. 그러면 클라이언트는 현재와 동일한 방식으로 데이터에 액세스합니다. 지금 당장은 IPC와 함께 쉽게 사용할 수있는 완전히 별개의 구성 요소로 구현하기를 권장합니다.

내가 이것을하기로 결정하면 나는 거기에 관해 게시 할 것이므로 블로그를 따라 가라.

+1

ur 사이트는 아래로 보인다 .... –

5

서버와 클라이언트가 모두 필요합니다.

0

짧은 답변 :

Cromis IPC 명명 된 파이프 구현입니다. 클라이언트는 응용 프로그램 특정 프로토콜로 정의되어야하는 일련의 명령을 전송할 책임이 있습니다. 해당 서버는 클라이언트를 청취하고 이러한 프로토콜 요청을 처리하는 프로세서 역할을합니다. 귀하의 경우에는 양방향 통신이 필요하므로 두 가지 프로토콜을 사용하여 두 프로세스에서 클라이언트와 서버를 만들어야합니다.

긴 답변 :

당신은 작업을 할 Cromis IPC를 사용할 수 있습니다. 위에서 설명한 것처럼 두 개의 응용 프로그램 별 프로토콜을 정의하고 프로토콜 클라이언트와 프로토콜 프로세서를 직접 작성해야합니다. 이것은 주목할만한 연구이다.

최근에 나는 Apache Thrift을 만났습니다. Apache Thrift는 고성능 IPC 프레임 워크를 제공하는 것을 목표로합니다. Apache Thrift의 한 가지 환상적인 기능은 IPC에 대한 코드를 자동으로 생성 할 수 있다는 것입니다. 그리고 Delphi를 지원합니다.

spec 파일에 응용 프로그램 특정 프로토콜을 정의하기 만하면됩니다. Thrift는 관련 클라이언트 및 프로세서 코드를 생성합니다. 또한 Named Pipe뿐 아니라 소켓 또는 기타 전송 구현을 선택할 수도 있습니다. 정말 시도해 볼 가치가 있습니다.