다음을 통해 공유


OperationContractAttribute.AsyncPattern 속성

정의

서비스 계약의 Begin<methodName> 및 End<methodName> 메서드 쌍을 사용하여 작업이 비동기적으로 구현됨을 나타냅니다.

public:
 property bool AsyncPattern { bool get(); void set(bool value); };
public bool AsyncPattern { get; set; }
member this.AsyncPattern : bool with get, set
Public Property AsyncPattern As Boolean

속성 값

Boolean

trueBegin<methodNamemethod>가 methodName> 메서드와 일치 End< 하고 인프라에서 서비스 인터페이스에서 비동기 메서드 쌍으로 구현되는 작업으로 처리될 수 있으면 이고, false그렇지 않으면 . 기본값은 false입니다.

예제

다음 코드 예제에서는 동기 버전과 비동기 버전을 Add 모두 포함하는 서비스 계약에 대한 클라이언트 채널을 보여 줍니다. 클라이언트에서 계약 인터페이스를 사용하는 경우 두 작업 모두 BeginAdd Add 동기적일 수도 있고 그렇지 않을 수도 있는 서버에서 메서드를 호출합니다. 계약을 사용하여 서비스를 구현하는 경우 기본값은 들어오는 요청이 동기 메서드로 디스패치된다는 것입니다.

[ServiceContract]  
public interface IAddTwoNumbers  
{  
    // If the asynchronous method pair  
    // appears on the client channel, the client can call   
    // them asynchronously to prevent blocking.  
    [OperationContract (AsyncPattern=true)]  
    IAsyncResult BeginAdd(int a, int b, AsyncCallback cb, AsyncState s);  

    [OperationContract]  
    int EndAdd(IAsyncResult r);  

    // This is a synchronous version of the BeginAdd/EndAdd pair.  
    // It appears in the client channel code by default.   
    [OperationContract]  
    int Add(int a, int b);  
   }  

설명

AsyncPattern 속성을 사용하여 서버, 클라이언트 또는 둘 다에서 비동기적으로 호출할 수 있는 서비스 작업을 빌드합니다. 이 속성은 AsyncPattern 메서드에 Begin .NET Framework 비동기 메서드 디자인 패턴을 준수하는 일치하는 End 메서드가 있음을 런타임에 알릴 수 있습니다. 서비스 작업을 구현하는 서버 비동기 메서드를 빌드하면 서비스 클라이언트에 영향을 주지 않고 서버 확장성과 성능이 향상되며, 비동기적으로 수행할 수 있는 긴 작업을 수행한 후 서비스 작업이 클라이언트에 무언가를 반환해야 하는 경우에 권장됩니다.

서버의 비동기 메서드 쌍은 작업의 기본 WSDL(웹 서비스 설명 언어) 설명에 영향을 주지 않는 구현 세부 정보이므로 클라이언트는 영향을 받지 않습니다. 이러한 메서드는 클라이언트에 메시지와 상관 관계가 <output> 있는 단일 작업으로 <input> 표시됩니다. WCF는 자동으로 인바운드 메시지를 메서드로 Begin<methodName> 라우팅하고 호출 결과를 End<methodName> 아웃바운드 메시지로 라우팅합니다. 따라서 클라이언트 채널은 메서드 쌍을 단일 동기 작업 또는 비동기 작업 쌍으로 나타낼 수 있습니다. 어떤 경우에도 클라이언트 표현은 어떤 방식으로든 서버의 비동기 구현에 영향을 주지 않습니다.

클라이언트 계약은 이 속성을 사용하여 AsyncPattern 클라이언트가 작업을 비동기적으로 호출하는 데 사용할 수 있는 비동기 메서드 쌍을 나타낼 수 있습니다. 일반적으로 클라이언트 애플리케이션은 ServiceModel 메타데이터 유틸리티 도구(Svcutil.exe) 도구와 /async 클라이언트가 작업을 비동기적으로 호출하는 데 사용할 수 있는 및 End<methodName> 메서드 쌍을 생성하는 Begin<methodName> 옵션을 사용합니다.

참고

서비스 작업에 비동기 버전과 동기 버전이 모두 있는 경우 서비스의 기본 동작은 동기 버전을 호출하는 것입니다.

적용 대상