2009-05-01 1 views
4

D-Bus specification 내가 것방화벽을 통해 여러 대의 Linux 컴퓨터에서 작동하도록 D-Bus를 얻는 좋은 방법은 무엇입니까?

...

D-버스 .. 응용 프로그램은 서로 ... 현재 통신 응용 프로그램은 하나의 컴퓨터에있는 이야기를 할 수있는 간단한 방법이라고 말한다 D-Bus와 비슷하지만 여러 Linux 머신에서 작업하기 때문에 방화벽이 관련 될 수 있습니다. 예를 들어 내 메일 서버가 중요한 메시지를 받았다고 판단하면 내 컴퓨터에서 집에서 볼 수있는 버스에 이벤트를 게시하고 linpopup 창을 시작하여 응답 할 수 있습니다.

내가 관심을 갖는 이벤트는 비교적 드물기 때문에 성능이 낮은 기술은 괜찮습니다. 그러나 나는 어떤 바퀴도 재발견하지 않는 것을 좋아할 것입니다. 가능한 한 많이 쉘 스크립트 나 다른 고급 언어로 작성하고 가능한 한 C로 작성하지 않는 편이 좋을 것입니다 (그러나 C API가 필요한 경우 C API를 호출 할 용의가 있습니다).

내가 공식 D-Bus 웹 페이지를 해석하는 방법은 it would be nice to get D-Bus to talk to multiple computers, but it doesn't work입니다.

편집 : D-버스가에 대해 나에게 매력적인 무엇 의 모델 게시하고 가입 :

  • 흥미로운 이벤트를 관찰하는 기계는 "시스템"에 해당 이벤트를 게시합니다.

  • 특정 이벤트에 대해 궁금한 머신은 해당 이벤트 만 구독합니다. 이벤트가 발생하면 "시스템"이 시스템에 알립니다.

"시스템"은 단일 시스템입니다. 여러 컴퓨터에서 비슷한 것을 원합니다. 이는 머신간에 TCP 또는 SMTP 통신과 같은 직접 솔루션을 배제합니다. 그러나 모든 게시 및 구독 요청을받는 중앙 서버를 갖게되어 기쁩니다. 나는 내 자신을 만들기보다 쉬울 것이라고 생각하기 시작했다. 나는 Advanced Message Queueing Protocol (AMQCP)을 이해하는 것보다 나 같은 것을 위해 진보했다.

성능이 저하되지 않습니다. 단순함은 분명히 목표입니다.

한 번 더 : 어떤 소프트웨어를 봐야합니까?

+0

원격 D-Bus의 상태와 관련하여이 질문 (및 [D-Bus remote doc] (http://www.freedesktop.org/wiki/Software/DBusRemote))이 오래 되었습니까? [이 다른 질문에 대한 답변] (http://stackoverflow.com/questions/10158684/connecting-to-dbus-over-tcp)을 참조하십시오. –

답변

1

아마도 (전적으로 가능합니다!) 요점을 놓치고 있지만 SMTP를 사용하고 전자 메일 메시지를 보내지 않는 이유는 무엇입니까? 아니면 TCP 패킷, 그리고 다른쪽에 리스너 프로그램이 있습니까?

+0

나는 바퀴를 재발 명하고 싶지 않다. 기계가 위아래로 움직입니다. 청취자 프로그램은 쓸 고통입니다. 방화벽 뒤에있는 머신은 TCP 아웃을 할 수 있지만 다른 머신들은 TCP를 사용할 수 없습니다. 문제가 많고 디자인에 관한 질문이 많습니다. 기존 인프라를 구축하고 싶습니다. –

+0

SMTP는 좋은 생각입니다. 방화벽을 통과하는 메시지가 모두 존재하고, 방화벽이 중계 된 메시지의 출입을 제대로 중지하지 않으며, procmail + 당신이 가장 좋아하는 쉘 스크립트가 나머지를 처리해야합니다. – vezult

1

나는 이와 같은 기성품 해결책을 안다.

내 제안은 curl 또는 wget을 사용하여 HTTP POST 요청을 정보가 포함 된 매우 간단한 웹 응용 프로그램에 보내는 스크립트를 작성하는 것입니다. 그리고 다른 기계가 간격으로 동일한 웹을 폴링하고 정보를 얻습니다.

Comet은 폴링 nastiness를 향상시킬 수 있지만 더 많은 노력이 필요할 것입니다.

2

메시지와 앱 간의 통신을 관리하는 "새로운 것"은 분명히 토끼입니다.

http://www.rabbitmq.com

http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol

+0

게시 및 가입은 내가 원하는 것에 가깝지만 AMQP 사양은 저를 공포에 떨게했습니다. 어쨌든 +1하십시오. –

+0

마지막 옵션으로 XMPP (Jabber) 기반의 메시징 시스템을 설치할 수 있지만 사람들 대신 소프트웨어를 클라이언트로 사용합니다 ... 일부 사람들이 그런 종류의 설정을 사용하고 있다는 소식을 들었습니다 ... 그게 도움이 될까요? XMPP에 연결하기위한 라이브러리가 많이 있으며 OpenFire와 같은 서버가있어 플러그인으로 확장 할 수 있으므로 메시지와 함께 사용할 동작을 쉽게 프로그래밍 할 수 있습니다. – Andor

2

당신은 메시징 솔루션을 검색해야하지만, 사람들은 따라 달라집니다

는 messaing, 라우팅 및 보안을 설정 AMQP의 구현 ...

확인이인가 어떤 언어로 작업 할 것인가. 자바는 JMS (Java Message Service)라고 불리는이 기능을 잠시 동안 가지고 있습니다. 그러나 다른 구현이 존재합니다.

  • ZeroMQ가 API 바인딩을 가지고 : C, C++, 파이썬, .NET/모노
  • OpenAMQ 바인딩 API했다 더 : 파이썬, 자바, 루비와 C

나는 경험이 없다 다른 프레임 워크를 사용하면 무엇을 사용해야 할지를 알 수 없지만 이러한 샷을 줄 수는 있습니다.

+0

더 많은 AMQP, 슬프게도 ... 복잡한 , 간단하고 낮은 성능의 솔루션을 원하는 고성능 솔루션입니다. –

0

하위 계층 프로토콜을 사용하려는 경우 SOAP을 사용해 볼 수 있습니다. 바이너리 프로토콜만큼 효율적이지 못하며 높은 수준의 대기열을 직접 작성해야하지만 웹 프록시와 SMTP 서버를 통해 작동 할 수 있습니다. 이전에 실험 해본 점잖은 PERL 구현이 있습니다. 더 많은 정보를 들어

:

http://www.w3schools.com/soap/default.asp

+0

감사합니다. XML과 HTTP를 사용하면 어떤 이점이 있다고 생각합니까? (나는 앵글 브래킷 세금을내는 것을 꺼립니다.) 방화벽/프록시 문제를 피할 수 있기 때문에 –

+0

HTTP. XML은 차선책이지만 SOAP은 여러 플랫폼에서 여러 가지 구현이있는 표준으로 대부분 버그가있는 것으로 보입니다. SOAP :: Lite 구현에는 압축, SSL 및 인증과 같은 간단하지만 귀찮은 많은 작업이 이미 포함되어있어 상위 수준 구현에 집중할 수 있습니다. –

1

는 TCP/IP를 기반으로 메시지 큐 (MQ)/메시지 지향 미들웨어 (MOM) 솔루션은 사용자의 요구 사항을 충족해야합니다. 대부분의 성숙한 오퍼링은 다양한 언어에 대한 자국어 바인딩을 제공합니다. 나는 ActiveMQ에 행운을 가져 왔고 간단한 스크립트 작업에 충분할 CLI 인터페이스를 가지고있다.

배경의 약간은 여기에서 찾을 수 있습니다 : http://en.wikipedia.org/wiki/Message-oriented_middleware

행운을 빌어 요,

섀넌

0

당신은 기계 사이에 D-버스 메시지를 브리징 고려해야한다. D-Bus 메시지를 받고, 필터링하고, 특정 메시지를 AMQP 토픽 교환기로 보내는 메시지 브릿지 앱을 작성하십시오. MQ 브로커 인 RabbitMQ로 쉽게 할 수 있으며 AMQP 모델을 익히는 데 시간을 할애하는 것이 좋습니다. RabbitMQ 사이트는 문서, 자습서, 블로그 및 FAQ로 가득 차 있습니다.

일반적인 AMQP 사용은 메시지 생성 프로세스와 다른 컴퓨터에있을 수있는 메시지 소비자 프로세스를 갖는 것입니다. 생산자는 단순히 브로커에 연결 한 다음 라우팅 키 태그를 사용하여 주제 교환에 메시지를 게시합니다. Exchange는 메시지를 큐로 라우팅하는 브로커의 프로세스입니다. 메시지 소비자도 브로커에 연결하지만 브로커가 동일하지 않을 수 있습니다. 그런 다음 소비자는 사용할 대기열 이름을 선언합니다. 해당 큐 이름을 바인딩 키가있는 명명 된 Exchange에 바인딩합니다. 바인딩 키는 교환기로 들어오는 라우팅 키와 일치하는 패턴입니다. 가장 간단한 경우 라우팅 키와 바인딩 키는 동일하지만 바인딩에 와일드 카드 패턴이 포함되는 경우 더 흥미 롭습니다.

AMQP를 배우고 싶지 않으면 0MQ를 사용하여 컴퓨터를 브리지하십시오. 0MQ는 훨씬 간단하며 기본적으로 여러 끝점이있는 소켓을 가질 수 있습니다.

1

저의 연구는 저에게 고대의 질문으로 이어진 이래로 많은 부분이있었습니다.

IoT의 표준 인 MQTT를보고 싶습니다. 2016 년 이래로 ISO 및 OASIS 표준입니다. http://mqtt.org/

가볍고 사용하기가 쉽고 간단합니다. 원칙은 게시/구독입니다.

아주 좋은 구현은 Eclipse 우산 아래있는 Mosquitto https://mosquitto.org/입니다. Eclipse Paho 프로젝트의 클라이언트 라이브러리는 https://eclipse.org/paho/입니다.

관련 문제