2010-08-12 2 views
0

초기 접근법은 응용 프로그램 A의 데이터베이스에서 저장 프로 시저를 사용하여 추가 데이터를 수집하고 응용 프로그램 B가 호스팅하여 필요한 매핑과 지속성을 수행하는 웹 서비스입니다. 응용 프로그램 A와 응용 프로그램 B는 동일한 컴퓨터에 없을 수 있습니다. 초기 요구 사항은 응용 프로그램 A 측에서 SQL Server 데이터베이스를 지원하는 것입니다. CLR 저장 프로 시저가 떠 올랐습니다. 그러나 웹 서비스 호출은 SQL Server 엔진에 심각한 성능 영향을 미칠뿐만 아니라 DBA가 제공하지 않으려는 프로 시저에 대한 사용 권한 상승을 요구합니다.응용 프로그램 B에서 응용 프로그램 A의 감사 데이터를 소비, 메시징 및 저장하는 가장 좋은 방법은

데이터베이스 A에 대한 참조 테이블의 일부 양식을 만드는 절차와이 데이터를 사용하는 폴링 응용 프로그램을 작성하고 응용 프로그램 B에서 한 번 처리하는 절차를 생각 중입니다. 그러나 더 나은 방법이 있다고 생각할 수는 없습니다. 데이터 폴링 옆에이 작업을 수행합니다.

응용 프로그램 A는 Windows 전용입니다. 응용 프로그램 B는 Windows, UNIX 또는 LINUX 일 수 있으므로 Java가이 측면에서 분명한 선택입니다.

답변

0

당신이 생각한 접근법의 목록을 우리에게 주셨지만, 성취하고자하는 것이 무엇인지, 목표가 무엇인지 등을 정확히 설명하지는 않았습니다. 이 질문. 귀하의 요구 사항이 무엇인지 명확하게 설명 할 수 있습니까?

응용 프로그램 간의 비동기 메시징에 대한 표준 답변은 JMS를 사용하는 것입니다. 응용 프로그램 A는 감사해야 할 이벤트가 발생할 때마다 큐에 메시지를 저장하고 응용 프로그램 B는 특정 속도로 큐에서 메시지를 사용하도록 작성됩니다 ("실시간"을 원한다면 큐를 자주 폴링 할 수 있음). 그런 다음 응용 프로그램 B는 이러한 메시지와 관련하여 필요한 모든 작업을 수행 할 수 있습니다.이를 데이터베이스에 쓰거나 다른 웹 서비스 등으로 보냅니다.

이렇게하면 응용 프로그램 A의 작업과 원하는 작업을 애플리케이션 B - 메시지를 어떻게 감사하고 싶은지 - 서로 완전히 분리됩니다. 이를 통해 상대방을 변경하지 않고도 새로운 유형의 이벤트를 감사하고 메시지의 페이로드를 변경하고 메시지를 다른 곳으로 출력하는 등 한쪽에서 작업을 변경할 수 있습니다.

또한 두 응용 프로그램을 서로 독립적으로 확장 할 수 있습니다. B에 영향을주지 않고 A 인스턴스를 더 추가 할 수 있으며, A는 B가 소비하는 것보다 훨씬 더 높은 속도로 메시지를 생성 할 수 있으며 A는 B를 기다리지 않습니다. 사용자의 행동에 응답 할 수 있기 전에 메시지를 소비합니다.

관련 문제