2011-01-05 5 views
4

WCF 서비스 메서드를 실행하는 데 2 ​​시간 이상 걸립니다 (일부 보고서 실행). 시간에 관계없이 시간 초과가 발생하지 않도록하려면 어떻게해야합니까? 나는 WCF 설정에 많은 타임 아웃 설정이 있다고 생각 하나, 어느 것이 나를 위해 적절한 것인지 모르겠습니다. ASMX 웹 서비스의 경우 무한 타임 아웃 설정을 지정하는 옵션이 있었지만 WCF와 비슷한 설정이 있습니까? 또한 작업자 프로세스의 리사이클, 유휴 시간 초과 등과 같은 IIS 설정을 변경해야합니까 (IIS에서 호스팅되는 WCF servicie)?장기 실행 WCF 서비스에 대한 시간 제한 설정

답변

5

콜백 사용을 고려 했습니까? 클라이언트가 요청을 보낸 다음 서버에서 완료 될 때까지 서버로부터 알림을 기다립니다. 이것은 아마도 클라이언트의 변경을 필요로 할 것입니다. 그러나 그런 식으로 서비스는 "체인을 덜컥 거리며"보고가 끝나면 클라이언트에게 알릴 수 있습니다.

도움 : http://idunno.org/archive/2008/05/29/wcf-callbacks-a-beginners-guide.aspx

WCF는 제한 시간 : http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/

당신은 또한뿐만 아니라, 클라이언트 측에서 시간 제한을 고려해야합니다. (binding.OpenTimeout, ReceiveTimeout, CloseTimeout 등)

또 다른 옵션은 방정식에서 IIS를 제거 같은 상황을 단순화 할 수있는 Windows 서비스에서 WCF를 호스트하는 것입니다 :

http://msdn.microsoft.com/en-us/library/ms733069.aspx

또는 단방향 WCF 통화를 사용하는 것은 어떻습니까? 그러면 요청을 보낸 후 호출이 최대한 빨리 클라이언트에 반환됩니다.

Need sample fire and forget async call to WCF service

+0

예, Windows 서비스에서 WCF 서비스를 호스팅하려고합니다.이 서비스는 장기 실행 작업이고 사용자가 알림을받는 데 너무 오래 기다릴 수 없기 때문에이 시나리오에서는 콜백이 적절하지 않다고 생각합니다. 결과. 그것은 화재 및 전화를 잊어 버리고 사용자는 네트워크상의 파일 시스템을 검사하여 보고서가 작성되었는지 여부를 확인합니다. 처음에는 설치 및 제거의 번거 로움 때문에 Windows 서비스 사용에 반대하여 IIS를 사용해 보았지만 시간 초과 문제가 발생했습니다. – RKP

+0

WCF에서 편도 전화를 사용하는 것은 어떻습니까? http://stackoverflow.com/questions/774648/need-sample-fire-and-forget-async-call-to-wcf-service – Larsbj

8

이것은 웹 서비스 악용 사례입니다. 이러지 마.

대신 웹 서비스가 별도의 프로세스에서 실행되는 장기 실행 작업을 시작하게하십시오. 고객이 보고서 작성시기를 알아야 할 경우 보고서 작성을 추적하고 보고서가 완료되면 메모를 작성하게하십시오. 클라이언트는 웹 서비스를 호출하여 해당 상태를 확인할 수 있습니다.

실제로 몇 시간 동안 열려있는 HTTP 연결에 의존하고 싶지 않습니다. 그것은 네트워크입니다. 네트워크에서 상황이 발생합니다. 나쁜 것들.

+0

네, 맞습니다. Windows 서비스에서 WCF 서비스를 호스팅하여 시간 초과 문제를 해결할 수 있는지 확인하려고합니다. – RKP

1

대신 WCF workflow service (사용 WF)을 생성 고려한다. 이는 특히 장기 지속성을 사용하는 경우 장기 실행 프로세스를 처리하도록 특별히 설계되었습니다.

+0

답장을 보내 주셔서 감사합니다. 이것은 워크 플로가 아니며 실행하는 데 시간이 오래 걸리는 작업이므로 WF를 사용하면 과도한 작업 일 수 있습니다. – RKP