2008-08-06 8 views
9

현재 특정 요구 사항이있는 프로젝트에서 작업 중입니다.타이머 기반 이벤트 트리거

  • 데이터
  • 데이터 2005
  • 데이터가 웹 GUI
  • 와 통신 Windows 서비스를 통해 조작 SQL에 저장되어있는 외부 웹 서비스에서 검색되는 다음과 같이 이들의 간략한 개요입니다 웹 서비스는 데이터베이스를 통하는 것을 제외하고는 내부 웹 UI와 연결되지 않습니다.
  • 웹 서비스와의 통신은 시간 기반이어야하며 웹 UI에서 사용자 개입을 통해 트리거되어야합니다.

웹 서비스 통신 트리거링을위한 현재 (사전 사전 제작) 모델은 수동 개입으로 생성 된 트리거 요청을 저장하는 데이터베이스 테이블을 통해 이루어집니다. 필자는 다중 트리거 메커니즘을 갖고 싶지 않지만 호출 시간에 따라 트리거를 사용하여 데이터베이스 테이블을 채울 수 있기를 원합니다. 내가보기에는 이것을 달성하는 두 가지 방법이 있습니다.

1) 두 개의 추가 매개 변수를 저장하도록 트리거 테이블을 조정하십시오. 하나는 "이 시간 기반인가 수동인가?" 및 타이밍 세부 사항 (결정될 정확한 포맷)을 저장하기위한 널 필드 (nullable field). 그것이 수동으로 생성 된 트리거 인 경우, 트리거가 실행되면 처리 된 것으로 표시하지만 시간 초과 된 트리거는 표시하지 않습니다.
또는
2) 시간 간격으로 트리거를 즉석 작성하는 두 번째 Windows 서비스를 만듭니다.

두 번째 옵션은 저에게 퍼지처럼 보일 수 있지만 옵션 1의 관리는 프로그래밍의 악몽으로 쉽게 바뀔 수 있습니다 (테이블의 마지막 설문 조사에서 어떻게해야하는지 알 수 있습니까? 다음 투표에서 다시 트리거하는 것을 중지하십시오.)

아무도 내가 어떤 경로 (이 두 가지 중 하나 또는 아마도 세 번째, 나열되지 않은 경로)를 결정할 수 있도록 도와 주시면 감사하겠습니다. .

답변

1

왜 Windows 서비스 대신 SQL 작업을 사용하지 않습니까? 저장 프로 시저에서 db "트리거"코드를 모두 캡슐화 할 수 있습니다. 그런 다음 UI 및 SQL 작업은 수동 또는 시간 간격에 관계없이 동일한 저장 프로 시저를 호출하고 동일한 방식으로 트리거를 만들 수 있습니다.

0

내가 보는 방식입니다.

당신은 스케줄러의 역할을하는 Windows 서비스를 가지고 있고 거기에 단순히 웹 서비스를 호출하고 데이터베이스에 데이터를 넣는 클래스가 있습니다.

그래서 이러한 클래스를 WebUI에서 직접 사용할 수 있으며 WebUI 트리거를 기반으로 데이터를 가져올 수 있습니다.

일부 서비스가 (사용자가 제어 할 수없는 간격으로) 해당 조치를 실행하기 위해 데이터베이스에서 플래그 (트리거)로 사용자 생성 작업을 저장한다는 생각을 좋아하지 않습니다.

전체 코드를 exe로 변환 한 다음 Windows 스케줄러를 사용하여 예약 할 수도 있습니다. 그리고 사용자가 웹 UI에서 작업을 트리거 할 때마다 동일한 exe를 호출하십시오.

0

@Vaibhav

불행하게도,이 솔루션의 물리적 아키텍처 (다음 웹 서비스를 호출 할 수 있습니다) 서비스에 대한 직접 데이터베이스에 웹 UI 이외의 구성 요소 사이의 통신 및 데이터베이스를 허용하지 않습니다 .그러나 커뮤니케이션 교실의 재사용이 여기에 이상적이라는 데 동의합니다. 우리 업무의 범위 내에서 통신 수업을 할 수는 없습니다. *

* 기술적으로 " 더 나은 "해결책은 외부 요인에 의해 방해 받습니까?