2009-05-14 3 views
1

웹 서비스 (WCF/ASMX/etc) 호출에 결과가 반환 된 후 일부 처리가 수행되는 방법이 있습니까? 참고 추가 프로세싱이 완료되기 전에 클라이언트가 즉시 결과를 필요로하므로 비동기 호출을 찾지 않습니다.웹 서비스에서 애프터 콜 프로세스를 수행하는 방법은 무엇입니까?

주요 제약 사항은 내가 알 수있는 한, 내 서버에서 코드를 실행하는 유일한 방법은 ASP 페이지 또는 웹 서비스를 사용하는 것입니다.

배경 스레드를 생성하여 수행 할 수 있습니까?

답변

1

클라이언트가 알지 못하거나 성공을 제어 할 부작용을 원하십니까? 즉각적인 동기식 응답을 반환하더라도 비동기 처리입니다. 결과가 관찰 가능하고 고객에게 관심이있는 경우 고객 및 운영자가 이후에 성공했는지 여부를 판단 할 수있는 방법이 있어야합니다.

웹 서비스 (통신 및 활성화 레이어를 제공하는 WCF와 직각)를 호스팅하는 방식에 달려 있습니다. 일반 웹 서비스 호스팅에서는 WS 호출 외의 작업을 처리 할 수 ​​없으므로 주로 발을 쏴서 모든 서버 자원을 먹는 것을 방지합니다. ASP.NET ASMX 호스팅에서

  • , 당신은 thread pool에 다른 작업을 입력 할 수 있지만,이 종료 될 수 있습니다 서버 부하가 과도한 경우 경고없이. 최근 프로덕션 서비스에서이 문제에 의지해야했습니다. 운이 좋게도 서버 호스트는 높은로드를 경험하지 않습니다. 우리는이 솔루션의 안정성에 대해 다소 긴장하고 있습니다.
  • 나는 Windows Activation Services으로 작업하지는 않았지만 별도의 스레드에서 추가 작업을 생성하는 방법이 있어야합니다.
  • 언제든지 자신의 작업자 프로세스를 구현할 수 있습니다. Windows 서비스로 제공하고 필요에 따라 작업을 제출하십시오. 이것은 극도로 어렵지는 않지만 신뢰성 있고 확장 성있게 수행하려면 약간의 작업이 필요합니다. 마음에 드는 사람이 아니며 WAS가 다루는 시나리오의 종류.

다른 스레드를 생성하는 것은 쉽지만 IIS가 자유롭게 수행하도록 허용해서는 안됩니다. 특히 다중 응용 프로그램 웹 호텔에서 실행되는 경우에는 특히 그렇습니다.

1

웹 서비스는 Windows 서버에서 호스팅 될 가능성이 높습니다. 맞습니까? 예를 들어 이메일을 전송 (

  • 출시
  • 후 다음 어떤 항목에 따라 않는 다른 응용 프로그램/프로세스에 의해 스캔됩니다 데이터베이스 테이블에 항목을 기록 윈도우 워크 플로우 : 당신은 일의 숫자를 할 수 등) 콘솔 응용 프로그램
  • 전화 같은 다른 서비스 나

내가 옵션은 정말 아주 끝이 생각하는 다른 서버의 전원

  • 킥. 그러나 그들은 웹 서비스 자체의 일부가 아닙니다. 웹 서비스 호출이 끝나는 전에 에서 해제해야합니다. ASMX 또는 WCF에는 "요청을 보내고 계속 실행"할 수있는 기능이 없습니다. 서비스 메소드가 완료되면 응답을 보냅니다.

    마크

  • +0

    나는 마지막 하나를 좋아한다. 결코 나에게 어떤 것도 반환하지 않는 비동기 서비스를 호출한다. – BCS

    관련 문제