다음을 통해 공유


IBindingRuntimePreferences 인터페이스

정의

서비스에서 들어오는 요청을 동기적으로 처리하는지 아니면 비동기 적으로 처리하는지를 지정하기 위해 바인딩에서 구현할 수 있는 선택적 계약을 정의합니다.

public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
파생

예제

다음 예제에서는 IBindingRuntimePreferences 인터페이스를 구현하는 바인딩 구현을 보여 줍니다. 이 코드에서 수행 되는 청크 채널 샘플:

public class TcpChunkingBinding : Binding, IBindingRuntimePreferences
{
    TcpTransportBindingElement tcpbe;
    ChunkingBindingElement be;
    public TcpChunkingBinding()
        : base()
    {
        Initialize();
    }
    public TcpChunkingBinding(string name, string ns)
        : base(name, ns)
    {
        Initialize();
    }
    public override BindingElementCollection CreateBindingElements()
    {
        BindingElementCollection col = new BindingElementCollection();
        col.Add(be);
        col.Add(tcpbe);
        return col;
    }

    public override string Scheme
    {
        get { return tcpbe.Scheme;  }
    }
    public int MaxBufferedChunks
    {
        get { return this.be.MaxBufferedChunks; }
        set { this.be.MaxBufferedChunks = value; }
    }

    void Initialize()
    {
         be = new ChunkingBindingElement();
         tcpbe = new TcpTransportBindingElement();
        tcpbe.TransferMode=TransferMode.Buffered; //no transport streaming
        tcpbe.MaxReceivedMessageSize = ChunkingUtils.ChunkSize + 100 * 1024; //add 100KB for headers
         this.SendTimeout = new TimeSpan(0, 5, 0);
         this.ReceiveTimeout = this.SendTimeout;
    }

    #region IBindingRuntimePreferences Members
    public bool ReceiveSynchronously
    {
        get { return true; }
    }
    #endregion
}

설명

바인딩에서 동기 버전의 Receive 또는 Request 메서드를 사용하여 메시지를 처리하는 것이 더 효과적인 경우도 있습니다. Binding 클래스는 호출자에게 기본 설정을 나타내기 위해 IBindingRuntimePreferences를 선택적으로 구현할 수 있습니다.

바인딩을 구현 하지 않는 경우 IBindingRuntimePreferences, 기본적으로 Windows Communication Foundation (WCF) 서비스 모델 런타임 계층에서 비동기 버전을 사용 합니다 ReceiveRequest 메서드. 바인딩이 를 구현 IBindingRuntimePreferences하는 경우 WCF 서비스 모델 런타임 계층은 의 ReceiveSynchronously 값을 확인하고 이를 사용하여 이러한 메서드의 동기 버전(Receive 또는 ) 또는 Request비동기 버전(BeginReceiveEndReceive(IAsyncResult) 또는 BeginRequestEndRequest(IAsyncResult))을 호출할지 여부를 결정합니다. 바인딩에서 IBindingRuntimePreferences를 구현하고 true 속성에서 ReceiveSynchronously를 반환하는 경우 동기 버전의 ReceiveRequest 메서드를 사용하여 채널로부터 메시지를 수신하는 것이 좋습니다. 바인딩에서 IBindingRuntimePreferences를 구현하지 않거나 false 속성에서 ReceiveSynchronously를 반환하는 경우 비동기 버전의 BeginReceiveEndReceive(IAsyncResult) 또는 BeginRequestEndRequest(IAsyncResult) 메서드를 사용하는 것이 좋습니다.

ReceiveSynchronously 속성이 반환하는 값에 관계없이 모든 바인딩은 구현된 특정 채널 형식에 유효한 동기 및 비동기 버전 Receive 메서드 구현을 제공해야 합니다. 사용자 지정 채널을 구현 하는 방법에 대 한 자세한 내용은 참조 하세요. 개발 채널합니다.

속성

ReceiveSynchronously

들어오는 요청을 동기적으로 처리하는 것이 효과적인지 아니면 비동기적으로 처리하는 것이 효과적인지를 나타내는 값을 가져옵니다.

적용 대상