2010-04-07 5 views
2

구성된 시간 간격으로 대기중인 요청을 처리 할 수있는 서비스를 만들어야합니다. 예를 들어 웹 사이트로 이동하여 초당 한 번 요청을 제한해야하는 사이트에서 금융 데이터를 가져옵니다. 나는 WCF에 익숙하지 않고 MSMQ가있는 WCF가 이것을 구현하기위한 적절한 선택인지 잘 모르겠다. (2) 그렇다면 그 간격을 시행하기위한 최선의 메커니즘은 무엇인가? 스레드 기다려? 타이머 (그게 어떻게 작동하는지 확실하지 않음).X 초마다 처리하는 대기 WCF 서비스

답변

2

WCF에 명시 적으로 처리 할 수있는 기능이 없으므로 모든 작업을 직접 수행해야합니다.

서비스에서 MSMQ의 요청을 확실히 처리 할 수 ​​있지만 WCF의 MSMQ 수신기는 가능한 한 빨리 메시지를 선택하여 처리합니다. 매 X 초마다 메시지를 처리하도록 구성 할 수는 없습니다 (올바른 도구를 사용하면 위조 할 수는 있지만 그렇게 좋지는 않은 것처럼 보입니다).

처리 요청 사이의 지연이 매우 짧지 않은 경우 중간 대기열을 사용하여 보류중인 요청을 보관하는 것이 좋습니다. 즉, 실제 요청을 보내는 것은 무엇이든 WCF 서비스가 다른 대기열 (대기열 B)에서 청취하는 동안 아무도 대기중인 대기열에 직접 씁니다 (대기열 A). 그런 다음 X 초/분/초마다 실행되고 대기열 A에서 대기열 B로 단지 하나의 메시지 만 이동하여 실제 WCF 서비스가 실행되도록 트리거하는 작업 스케줄러에서 실행되는 스크립트만큼 간단 할 수 있습니다.

0

또는 창 서비스를 사용하여 대신 메시지를 사용할 수 있습니다. 메시지를 게시하자 마자 메시지를 소비하는 WCF 기능을 사용하지 않으면 처음에는 wcf를 사용할 이유가 없습니다.

2

WCF와 MSMQ는 훌륭한 팀입니다! 체크 아웃할만한 가치가있어.

WCF에서 제공하지 않는 부분은 "매 x 초마다 확인"입니다. 여기서 가장 좋은 방법은 Windows NT 서비스 내에 WCF 서비스를 호스팅하고 NT 서비스 내에 매 x 초마다 MSMQ 대기열을 확인하는 타이머를 두는 것입니다. 정말로 구현하기가 어렵지 않아야합니다. 뷰의 장점은 몇 줄의 코드만으로 NT 서비스 내에서 WCF 서비스를 매우 쉽게 자체 호스팅 할 수 있으며, 어떤 일이 언제 일어나는지 완벽하게 제어 할 수 있다는 것입니다. 자세한 내용은 MSDN 설명서 (How to Host a WCF service in a managed application)를 참조하십시오.

자료 :