2011-04-12 3 views
0

.net 웹 서비스를 사용하여 데이터베이스 레코드를 일괄 처리 할 계획입니다. 웹 서비스 요청은 매분 SQL Server Agent에 의해 호출되는 SQL Server 저장 프로 시저에서 들어옵니다. 한 번에 하나의 배치가 실행되기를 원할뿐입니다. 여기에서 요점은 서버를 과부하하는 것을 피하기 위해서입니다..net 웹 서비스의 처리를 어떻게 직렬화 할 수 있습니까?

이미 요청이 진행중인 경우 요청을 직렬화하거나 요청을 거부하는 좋은 방법이 있습니까?

나는 웹 서비스 인스턴스가 시작될 때 후속 웹 서비스 인스턴스가 읽을 수있는 데이터베이스에 플래그를 작성하도록 생각하고 있었다. 이미 설정되어있는 경우 아무 것도하지 않고 웹 서비스가 반환됩니다. 플래그가 설정된 후 플래그가 설정된 웹 서비스 인스턴스가 실패한 것으로 간주 될 것이므로 10 분이 지났다고해도 안전한 가드가 될 수 있습니다.

의견이 있으십니까?

건배, Ian.

답변

1

웹 서비스에서 정적 속성을 사용하여 실행 중일 때 설정할 수 있으며, 다른 인스턴스는 적절한 잠금 후이를 확인한 다음 정상적으로 실패 할 수 있습니다. 그것은 시간 제한을 고려할 수도 있습니다.

하지만 더 쉬운 방법은 없나요? 데이터베이스에서 웹 서비스로 돌아가서 다시 데이터베이스로 돌아가는 것과, 매분마다 실행하기를 원하는 것에 대해 이야기하는 것 같습니다. 뭔가 옳은 것처럼 보입니다. Windows 서비스 또는 Windows 작업 스케줄러를 사용할 수없는 이유가 있습니까?

+0

답장을 보내 주셔서 감사합니다. Andrew. 당신이 언급 한 다른 두 가지 옵션에 대해 읽었습니다. Windows 서비스는 약간 낮은 수준이므로 Windows 작업 스케줄러가 신뢰할 수없는 소리를 내고 CMD 창이 나타날 수있는 반면 바퀴를 다시 발명 한 경우 일정을 구현해야합니다. 네, 내 계획은 궁극적으로 데이터베이스에서 웹 서비스로 돌아가고 다시 돌아 오지만 데이터베이스의 초기 사용은 실제로 스케쥴 기능을위한 것일 뿐이므로 나는 이것이 약간의 청어라고 생각합니다! –

+0

웹 팜 시나리오에서 정적 속성을 사용한다고 생각하지 않습니다. 각 기계에 하나의 가치 사본이 없습니까? 사실 정적이라 할지라도 한 대의 컴퓨터에서만 고유 할 수도 있습니다. 그것은 많은 것을 기반으로하지 않습니다! :) –

+0

하지만 그게 무슨 뜻이야; 왜 데이터베이스가 작업 스케줄러가 필요한지를 결정하기 위해 무언가를하는 것입니다. 전혀 신뢰할만한 것이 아니며 명령 창을 열어야하는 이유도 없습니다. 그것은 이런 종류의 일을위한 특별한 인터페이스가없는 프로세스를 실행할 수 있으며 필요 이상으로 복잡성이 큰 이전 인스턴스를 관리 할 수 ​​있습니다. –

관련 문제