다음을 통해 공유


방법: ASP.NET 2.0을 사용하여 이벤트 구동 비동기 웹 서비스 클라이언트 구현

이 항목은 레거시 기술과 관련된 것입니다. 이제 XML Web services와 XML Web services 클라이언트는 다음을 사용하여 만들어야 합니다. Windows Communication Foundation.

.NET Framework의 버전 2.0에서 웹 서비스 기술 언어 도구(Wsdl.exe)에 의해 생성된 프록시 코드는 새로운 이벤트 구동 비동기 프로그래밍 모델을 지원합니다. 이벤트 구동 비동기 프로그래밍 모델과 ASP.NET 2.0 웹 클라이언트의 자동 프록시 생성을 결합하여 고성능의 웹 서비스 기반 웹 응용 프로그램을 신속하게 빌드할 수 있습니다.

이벤트 기반 비동기 패턴을 사용한 다중 스레드 프로그래밍에서는 복잡한 다중 스레드 코드를 직접 구현할 필요 없이 다중 스레드 응용 프로그램을 쉽게 빌드할 수 있도록 이벤트를 통해 콜백을 처리하는 새로운 비동기 프로그래밍 모델을 소개합니다. 새로운 이벤트 구동 비동기 모델에 대한 개요는 이벤트 기반 비동기 패턴 개요를 참조하십시오. 새 모델을 사용하는 클라이언트 구현에 대한 자세한 내용은 방법: 이벤트 기반 비동기 패턴의 클라이언트 구현을 참조하십시오.

.NET Framework 2.0 버전에서 ASP.NET 응용 프로그램을 사용하여 빌드된 웹 서비스 클라이언트는 새로운 App_WebReferences 하위 디렉터리를 사용할 수 있습니다. 이 하위 디렉터리에서는 클라이언트 ASP.NET 응용 프로그램이 WSDL 계약을 지원하는 XML Web services를 호출할 때 WSDL 파일을 프록시 코드로 동적으로 컴파일할 수 있습니다.

전체 샘플을 보려면 RADAsync 퀵 스타트(ASP.NET 데이터 서비스 퀵 스타트)를 참조하십시오.

이벤트 구동 웹 서비스 클라이언트 구현

  1. 비동기적으로 가장 잘 수행되며 시간이 많이 걸리는 동작을 수행하는 동기 웹 메서드를 사용하여 XML Web services를 만듭니다.

    [WebMethod]
    public string HelloWorld() {
      Thread.Sleep(5000);
      return "Hello World";
    }
    
    <WebMethod()> _
    Public Function HelloWorld() As String 
      Thread.Sleep(5000)
    ..Return "Hello World"
    End Function
    
  2. 클라이언트 ASP.NET 응용 프로그램에서 Async 특성을 @ Page 지시문에 추가한 후 true로 설정하고 @ Import 지시문을 사용하여 System.Threading 네임스페이스를 가져옵니다.

    <%@ Page Language="C#" Debug="true" Async="true" %>
    <%@ Import Namespace="System.Threading" %>
    
    <%@ Page Language="VB" Debug="true" Async="true" %>
    <%@ Import Namespace="System.Threading" %>
    
  3. 자동 프록시 생성을 사용하려면 웹 서비스 기술 언어 도구(Wsdl.exe)를 사용하여 WSDL 파일을 생성한 다음 클라이언트 App_WebReferences 하위 디렉터리에 저장합니다. 자세한 내용은 ASP.NET 웹 사이트 레이아웃을 참조하십시오.

  4. 일반적으로 서비스 클래스 이름과 WaitService 문자열을 함께 사용하여 새 개체를 만드는 방식으로 웹 서비스 클라이언트 응용 프로그램을 만들고, 웹 서비스 URL을 Url 속성에 할당합니다. 예를 들어, 서비스 클래스 이름이 HelloWorld인 경우 클라이언트는 HelloWorldWaitService 개체를 만듭니다.

    HelloWorldWaitService service = new HelloWorldWaitService();
    service.Url = "https://localhost/QuickStartv20/webservices/Samples/RADAsync/cs/Server/HelloWorldWaitService.asmx";
    
    Dim service As New HelloWorldWaitService()
    service.Url = "https://localhost/QuickStartv20/webservices/Samples/RADAsync/vb/Server/HelloWorldWaitService.asmx"
    
  5. 클라이언트 응용 프로그램 코드에서 프록시의 Completed 이벤트에 이벤트 처리기를 할당합니다. 다음 코드 예제에서 클라이언트 ASP.NET 페이지에는 웹 서비스 메서드가 반환될 때 호출되는 HelloWorldCompleted 메서드가 있습니다.

    //Add our callback function to the event handler. 
    service.HelloWorldCompleted += this.HelloWorldCompleted; 
    
    'Add our callback function to the event handler
    AddHandler service.HelloWorldCompleted, AddressOf Me.HelloWorldCompleted
    
  6. 클라이언트 응용 프로그램 코드에서 프록시에 Async 메서드를 호출합니다. 이 메서드는 웹 서비스와 같은 이름에 "Async"가 뒤에 추가됩니다. 자세한 내용은 방법: 이벤트 기반 비동기 패턴의 클라이언트 구현을 참조하십시오. 이 메서드 호출은 클라이언트 ASP.NET 페이지에서 비동기 호출처럼 보이지만 즉시 반환됩니다. 클라이언트 ASP.NET 페이지는 비동기 호출이 완료되고, 프록시의 Completed 이벤트가 발생되어 처리기 메서드가 실행되어야만 브라우저에 반환됩니다.

    service.HelloWorldAsync("second call");
    
    service.HelloWorldAsync("second call")
    

참고 항목

기타 리소스

ASP.NET 데이터 서비스 퀵 스타트