2010-05-05 11 views
0

내 질문에 매우 쉽게 노출 될 수 있습니다.응용 프로그램간에 정보 공유

나는 그 사이에 데이터를 공유하는 몇 가지 응용 프로그램이 있습니다. 데이터 공유 (여러 컴퓨터 교차)를 지원하는 방법이 필요하며 한 응용 프로그램이 데이터를 변경하면 다른 컴퓨터에이를 통보해야합니다.

내 질문은 내게 유용한 tecnologies에 관한 것입니다. 현재로서는 데이터가 변경 될 때 모든 응용 프로그램에 알리기 위해 데이터를 공유하는 데이터베이스와 외부 게시 - 구독 시스템 (예 : http://pubsub.codeplex.com/)을 갖는 것이 해결책입니다. 그러나 나는 도움이되는 해결책이 존재할 수 있다고 믿습니다.

그 중 어느 것을 알고 있습니까? 감사합니다. .

답변

0

Java를 사용하는 경우 JMX는 Sun's JMX tutorial입니다. 사용하기 쉽고 사용하기에 많은 지원이 있습니다.

+0

오 죄송합니다. 나는 그 점을 놓쳤다. 나는 .NET에서 일하고있다. 어쨌든 고마워. –

0

Windows Communication Foundation (WCF)을 사용하여 클라이언트와 서버간에 통신 할 수 있습니다. 통신은 두 가지 방법이 될 수 있으므로 클라이언트는 서버에 변경 사항을 알릴 수 있고 서버는 통지를 받아야하는 모든 관련 클라이언트에게 메시지를 푸시합니다. 양방향 통신은 WCF에서 Duplex Contract이라고합니다. 그렇게하면 실제로 데이터베이스가 필요하지 않으면 데이터베이스를 사용할 필요가 없습니다.

2

흠, 이런 아키텍처에 커밋 할 때주의해야합니다. 실제로는 제대로 작동하지 않습니다. 첫 번째 문제는 생성하는 네트워크 트래픽이 많아서 결코 확장 할 수 없다는 것입니다. 더 진지하게, 당신은 거대한 동시성 문제를 겪을 것입니다. 정의에 따르면 "변경된 데이터"알림은 늦게 배달되며 주문이 보장되지는 않습니다. 알림 사이에 충분한 시간 지연이 있어야 하위 시스템에 동기화 된 데이터보기를 제공 할 수있는 한 모든 것이 잘 작동합니다.

하지만 부하가 증가하고 알림이 버퍼링되기 시작하면 카드 하우스가 부숴집니다. 하위 시스템은 데이터의 이전보기에 대한 결정을 내리고 다른 하위 시스템에서 보유한보기와 동기화되지 않게됩니다. 당신도 그것에 대해 할 수있는 일이 없으며, 네트워크를 통해 "고정"할 수 없습니다. 디버깅하기가 매우 어렵 기 때문에 동기화 불일치는 완전히 무작위이며 가짜입니다.

중앙 집중식 서버 접근법을 추구하면 동시성이 훨씬 쉽게 처리됩니다.

+0

나는 너의 대답을 높이 평가했다. 동기화 및 네트워크 트래픽과 같은 중요한 문제를 지적하십시오. 중앙 서버를 사용하도록 제안했습니다. 나는 당신이 내가 서버에서 "공유 된 데이터"를 유지하고 필요한 경우 응용 프로그램이 그 데이터를 얻는다고 sugesting한다고 생각합니다. 이렇게하면 동기화 문제는 해결되지만 성능 문제가 발생합니다. 내 응용 프로그램을 빨리 실행해야합니다. 나는 매번 서버에 데이터를 가져갈 수 없다. 나는 RAM에 "공유 된 데이터"의 사본을 보관해야합니다. 이것이 내가 오래된 시스템 접근법을 선호하는 이유입니다 (오래된 데이터로 작업하는 것을 의미한다고 할지라도) –

관련 문제