4

내가 한 곳에서 같이 작업해야하는 두 가지 응용 프로그램이 있다고 가정 해 보겠습니다.웹 응용 프로그램이 아닌 웹 응용 프로그램에 웹 페이지의 변경 사항을 알리는 가장 좋은 방법은 무엇입니까?

  1. 웹 응용 프로그램 (PHP, 루비 레일에, ...)

데스크톱 응용 프로그램이있는 데스크톱 응용 프로그램 (자바, C++, ...)이로부터 통지한다 웹 응용 프로그램과 알림을 보내고받는 사이의 지연은 짧아야합니다. (< 10 초)

어떻게 할 수 있습니까? 10 초 간격으로 폴링을 생각할 수 있지만 많은 데스크톱 응용 프로그램에 알림을 보내야하는 경우 많은 트래픽이 발생합니다. LAN에서는 UDP 방송을 사용하지만 불행히도 여기서는 불가능합니다 ...

저에게 줄 수있는 아이디어에 감사드립니다.

+0

제 제안이 유죄를 입증 했습니까? – Ahmy

+0

아니, 내 질문에 제안한 것과 본질적으로 동일합니다. 나는 아직도 다른 것을 기다리고있다. 그러나 나는 더 나은 해결책을 얻지 못했고, 나는 당신의 대답을 받아 들일 것입니다. :) –

답변

3

여기서 "최상의 방법"은 제공 할 것으로 예상되는 데스크톱 클라이언트의 수에 따라 달라집니다. 알림을받을 바탕 화면이 하나만있는 경우 폴링은 훌륭한 접근 방법 일 수 있습니다. 예, 폴링은 이벤트 기반 알림보다 훨씬 많은 오버 헤드가 있지만 구현하기 가장 쉬운 솔루션 일 것입니다. ,는 "혜성"스타일의 웹 요청 수 (

  1. 바탕 화면 및 웹 서버 사이의 열린 지속적인 연결을 유지 : 폴링의 오버 헤드가 진정으로 받아 들일 수없는 경우

    , 나는 두 가지 기본 대안을 참조 또는 원시 소켓 연결)

  2. 데스크톱 응용 프로그램 내에서 서비스를 노출하고 웹 서버에 서비스 주소를 등록합니다. 이렇게하면 웹 서버가 필요에 따라 데스크톱을 호출 할 수 있습니다.

경고 - 두 가지 대안 모두 득점으로 가득합니다.몇 가지 하이라이트 : 당신이

  • 외부 서비스에 밖으로 호출 핫스왑로 당신의 웹 서버를 원하기 때문에 열려있는 연결을 유지

    • 은 까다로울 수있다 (예를 들어, 바탕 화면) 웹 서버에서 이 요청이 지연 될 수 있으므로 위험합니다. 이 알림을 별도의 스레드로 이동하여 웹 서버를 묶지 않아도됩니다.

    일부 문제를 완화하려면 중간 알림 서버를 도입하여 신뢰할 수없는 데스크톱을 웹 서버에서 분리 할 수 ​​있습니다. 웹 서버가 어딘가에 업데이트를 게시 할 수 있으며 데스크톱에서 폴링/연결/거기에 등록하여 통보하십시오. 여기에 바퀴를 재발 명하지 않으려면 MessageQueue 시스템과 관련 될 수 있습니다 ... 물론 이것은 새로운 중개자를 유지해야하는 복잡성을 추가합니다.

    이 접근법은 모두 매우 복잡하므로 아마도 폴링이 가장 좋은 방법이라고 할 수 있습니다.

  • 1

    작업을 수행하기 위해 수행해야 할 작업을 정확하게 모르지만 데스크톱 응용 프로그램 PC에서 Windows 서비스를 만들 것을 제안 할 수 있습니다.

    이 서비스는 새로운 변경 사항이있을 때마다 웹 응용 프로그램을 확인하고 변경 사항이 발생하면 웹 응용 프로그램과 웹 응용 프로그램에 변경 사항이있을 때 응답이 가능할 때 알림이있는 데스크톱 응용 프로그램을 실행할 수 있습니다 확인을 통해

    나는 이것이 정확하게 시도하지 않았 으면 좋겠다.하지만이 아이디어를 사용하는 것이 좋습니다.

    3

    나는 두 가지 방법으로 볼 수 있습니다

    • 귀하의 데스크톱 응용 프로그램 조사
    • 웹 앱이 데스크톱 응용 프로그램에게 통지 웹 응용 프로그램을

    귀하의 웹 RSS 피드를 게시 할 수있는 응용 프로그램,하지만 데스크톱 앱은 10 초마다 피드를 폴링해야합니다.

    트래픽이 거대 할 필요가 없다 : 당신은 HTTP를 HEAD 요청을 사용하는 경우, 당신이 마지막으로 수정 한 날짜와 작은 패킷을 얻을 것이다 (편리라는 이름의 마지막으로 수정을).

    1

    신디케이션 계층은 시스템을 수평 확장하는 데 도움이됩니다.

    데스크톱 앱은 (여러 대의/여러 대의 컴퓨터 중 하나에서 실행되는) "게시자"서비스로 등록 할 수 있습니다.이 게시자 서비스는 웹 앱에서 무엇인가가 변경되었다는 "알림"을 수신하고 즉시 등록 된 가입자.

    필요한 게시자 수는 사용자 수에 따라 증가합니다.

    편집 : 데스크톱 응용 프로그램이 소켓에서 수신 대기해야한다는 것을 잊어 버렸습니다.