2012-02-16 2 views
2

내 솔루션에 서비스 참조로 추가 된 타사 .NET 4 WCF 서비스를 사용하고 있습니다. 내 서비스가 타사 서비스가 아닌 Ddos가되도록 요청을 구성하는 방법이 있습니까?WCF 요청 조절

나는 다음과 같은 매개 변수를 제어 할 수있는 ServiceThrottling 알고 있어요 : 위의 매개 변수는 전혀 영향을 미치지 않도록

- MaxConcurrentCalls 
- MaxConcurrentSessions 
- MaxConcurrentInstances 

내 응용 프로그램이 단일 스레드입니다.

기간별 요청 수를 제한하고 싶습니다. 어쩌면 각 요청 사이에 일시 중지를 만들 수도 있습니다. 분명히 서비스 용 어댑터를 작성하여 직접 처리 할 수는 있지만 타사 서비스에는 ~ 200 가지 방법이 있으므로 많은 코드가 필요합니다.

이 구성에 의해 요청이 방법 스로틀 할 수 있습니까?

답변

2

귀하의 질문은 이미 몇 주 전에 작성되었으므로 여전히 필요한지 잘 모르겠습니다. 적어도 시도할만한 가치가 있습니다 ... 또한 시나리오를 오해 한 경우 수정하십시오.

필자가 이해하는 한, 당신은 자신의 서비스가 제 3 자 서비스를 한 요청 후에 만 ​​호출하도록 제한하려고합니다. 나는 이것에 대한 구성 가능한 해결책을 알지 못한다. 그러나 독자가 자신의 솔루션을 구현하는 것이 가능하다고 말한 것처럼 다른 접근 방식을 제안합니다.

에 요청을 넣은 다음 한 번에 하나의 큐 항목을 처리 할 수 ​​있습니다. 이 작업은 작업해야하는 환경에 따라 다양한 방법으로 구현 될 수 있습니다.

내 마음에는 두 가지 해결책이 있습니다.

간단한 접근 방식은 사용자 자신의 서비스 내에서 항목 당 한 번 써드 파티를 호출하고 어떤 종류의 locking을 사용하는 인 메모리 큐를 사용하는 것일 수 있습니다. 그러나 이것은 추악한 교착 상태를 피하기 위해 신중하게 생각할 필요가 있습니다.

더 복잡하지만, 아마도 더 나은 확장 가능한 솔루션 : 당신은 configure your service 할 수있는 Microsoft 메시지 대기열 (MSMQ) 인프라에 작성하고 add another service하는 타사 서비스에 해당 메시지를 순차적으로 처리합니다.

+0

답장을 보내 주셔서 감사합니다. 좋은 대답! 나는 타사 서비스에 대한 래퍼 구현을 끝냈습니다. 나는 큐를 사용할 필요가 없었지만 나는 그 아이디어를 좋아한다! – Marcus

관련 문제