2010-07-20 2 views
0

저는 웹 개발에 익숙하지 않아서 제가 가지고있는 문제에 대한 최선의 선택이 무엇인지 잘 모릅니다.웹 서비스가 실행되는 동안 상태 정보를 보내는 방법은 무엇입니까?

기본적으로 일부 데이터 처리를 위해 웹 서비스를 호출하는 웹 응용 프로그램이 있습니다. 이 프로세스는 시간이 오래 걸릴 수 있으며 클라이언트에게 상황 정보를 수시로 보내는 쉬운 방법이 있는지 알고 싶습니다.

지금 클라이언트는 브라우저에서 요청을 처리하고 완료 될 때까지 기다립니다.

웹 서비스에서 일부 정보를 보내려면 어떻게해야합니까? 나는 무엇을하고 있는가를 지정하는 백분율과 추가 텍스트를 보내고 싶습니다.

감사합니다.

답변

0

WCF 서비스는 [OneWay]로 표시되어 응답을 반환하지 않을 수 있습니다. 또는 서비스를 비동기 방식으로 시작한 다음 프로세스가 시작했거나 시작하지 않은 클라이언트로 돌아갈 수 있습니다.

그런 다음 클라이언트는 다른 사용자가 제안한대로 다른 방법을 폴링 할 수 있습니다.

처리하는 데 몇 시간이 걸리면 실행 시간 제한이나 클라이언트의 연결 시간 초과가 발생하기 때문에 동기화 서비스를 사용할 수 없습니다.

+0

정보를 제공해 주셔서 감사합니다. 나는 [OneWay] 옵션에 대해 몰랐다. – LEM

+0

OneWay에 대한 잡은 점은 서비스 오류가 알려지지 않을지라도 다음 단계를 폴링하는 것이 더 중요하다는 것입니다. 동기식 서비스 내에서 "직무"또는 비동기 처리를 파견하는 것이 편한 경우 초기 킥오프 동안 서비스의 피드백과 오랫동안 실행할 수있는 능력 모두를 얻게됩니다. wcf 서비스에서 프로세스를 실행 중입니다. 스티브 길햄 (Steve Gilham)이 듀플렉스 서비스조차도 트릭을 수행 할 수 있음을 알 수 있습니다. http://stackoverflow.com/questions/1142698/dealing-with-a-longer-running-process-in-wcf –

+0

다시 한번 감사드립니다. . 도와 주셔서 정말 고맙습니다. – LEM

0

다른 상태를 폴링 할 수 있습니까?

+0

어떻게하면됩니까? 웹 서비스가 끝나기를 기다리면서 클라이언트의 실행이 중지됩니다. – LEM

+0

호출 직전에 폴링을위한 새 스레드를 생성하고 결과를 얻은 후에이를 죽일 수 있습니다 ... – Marko

+0

아니면 타이머가 더 우아하고 쉽게 구현할 수 있습니다 ... – Marko

0

내가 당신이라면 응답을 기다리는 대신 원래 작업을 "시작"하여 즉시 반환하는 것과 같이 원래 요청을 비동기로 만들 것입니다. 그런 다음 응용 프로그램에서 주기적으로 폴링하여 작업 상태를 얻을 수있는 웹 서비스에 대한 별도의 메소드를 갖게됩니다. 완료되면 원래 요청과 같은 데이터를 표시 할 수 있습니다.

동 기적으로 수행하려면 Response.Buffer를 해제하고 응답에 직접 쓸 수 있습니다.

+0

고마워, 나는 그런 식으로 그것을 시도 할 것이다. – LEM

관련 문제