다음을 통해 공유


Binding 클래스

정의

클라이언트와 서비스 간의 통신에 사용되는 프로토콜, 전송 및 메시지 인코더를 지정하는 바인딩 요소를 포함합니다.

public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
    interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements IDefaultCommunicationTimeouts
상속
Binding
파생
구현

예제

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();
    // Close the ServiceHostBase to shutdown the service.
    serviceHost.Close();
}

설명

각각 엔드포인트가 다른 엔드포인트와 통신하고 클라이언트의 채널 팩터리와 서비스의 채널 수신기로 일관되게 빌드되는 방법의 측면을 설명하는 바인딩 요소의 컬렉션을 나타냅니다. 바인딩에는 프로토콜 채널, 전송 채널 및 메시지 인코더에 해당하는 바인딩 요소의 컬렉션이 포함되어 있습니다. 프로토콜 채널에 대한 바인딩 요소는 여러 개 있을 수 있지만 각 전송 및 메시지 인코더에 대해 하나의 바인딩 요소만 있을 수 있습니다. 바인딩에는 일반적으로 6개의 바인딩 요소 계층이 있습니다. 스택 맨 아래에 있는 전송 및 인코딩 바인딩 요소만 필요합니다. 각 바인딩에 인코딩이 필요하므로 인코딩을 지정하지 않으면 WCF(Windows Communication Foundation)에서 기본 인코딩을 추가합니다. 기본값은 HTTP 및 HTTPS 전송의 경우 Text/XML이고, 다른 전송의 경우 이진입니다.

다음 표에는 각 계층에 대한 옵션이 요약되어 있습니다.

계층 옵션 필수
트랜잭션 흐름 TransactionFlowBindingElement No
안정성 ReliableSessionBindingElement No
보안 대칭, 비대칭, 전송 수준 No
모양 변경 CompositeDuplexBindingElement No
업그레이드 전송 SSL 스트림, Windows 스트림, 피어 확인자 No
Encoding 텍스트, 이진 파일, MTOM, 사용자 지정 Yes
전송 TCP, 명명된 파이프, HTTP, HTTPS, MSMQ, 사용자 지정 Yes

각 바인딩 요소는 클라이언트에 채널 팩터리를 빌드하고 서비스에서 채널 수신기를 빌드하기 위한 사양을 제공합니다. 예를 들어 채널 팩터리 스택이 생성되면 바인딩의 각 바인딩 요소에 대해 스택에 하나의 채널 팩터리 가 있습니다. 동일한 종류의 매핑이 서비스의 스택에 있는 채널 수신기에 적용됩니다. 클라이언트와 서비스의 일관성은 이러한 엔드포인트 간의 채널 기반 연결을 설정하는 데 중요합니다. 각 팩터리 및 수신기는 채널 스택에서 해당 채널을 연결하는 해당 채널의 송신 및 수락을 처리하고 이러한 채널은 통신하는 데 사용되는 메시지를 보내고 받을 수 있습니다.

BindingName 각 instance 서비스의 메타데이터에서 고유하게 식별하는 및 Namespace 가 있습니다. 이름 또는 네임스페이스를 지정하지 않으면 WCF에서 기본값을 추가합니다. 기본 이름은 null 이고 기본 네임스페이스는 입니다 http://tempuri.org/. 바인딩에 대한 이 사용자 이름은 속성에 의해 Scheme 지정된 프로토콜 이름의 사양과 다릅니다. 예를 들어 HTTP 바인딩을 더 추가하려는 경우 원하는 대로 이름을 지정하고 모든 구성표를 "http"로 설정할 수 있습니다. Scheme를 기반으로 하는 고유한 애플리케이션이나 컴퓨터 디스패치가 없으므로, 따라서 잘 알려진 프로토콜에 대한 추가 처리기를 등록할 수 없는 일반적인 문제를 방지할 수 있습니다. 각 버전에 다른 이름을 지정하여 여러 버전의 바인딩을 나란히 사용하여 쉽게 작업할 수도 있습니다.

클래스는 Binding 오랜 시간 동안 리소스를 묶는 데 의존하는 DOS(서비스 거부) 공격을 완화하기 위해 인터페이스를 구현 IDefaultCommunicationTimeouts 합니다. 구현은 연결 열기 및 닫기 및 메시지 수신 및 보내기와 관련된 읽기 및 쓰기 작업에 대한 통신 시간 제한 값을 지정합니다. 이러한 시간 제한 및 기본값 작업을 가져와 설정하는 데 사용되는 속성은 다음 표에 요약되어 있습니다.

제한 시간 속성 기본값
OpenTimeout 1분
CloseTimeout 1분
SendTimeout 1분
ReceiveTimeout 10분

에서 Binding상속하여 바인딩을 만들 때 를 재정 CreateBindingElements의해야 합니다.

또한 고유한 바인딩 요소를 정의하고 앞의 표에 정의된 레이어 사이에 삽입할 수 있습니다. 자세한 내용은 CustomBinding 클래스를 참조하세요.

생성자

Binding()

기본 이름과 네임스페이스를 사용하여 Binding 클래스의 새 인스턴스를 초기화합니다.

Binding(String, String)

서비스의 지정된 바인딩에서 Binding 클래스의 새 인스턴스를 초기화합니다.

속성

CloseTimeout

전송 중 예외가 발생하기 전에 연결을 끊기 위해 제공되는 시간 간격을 가져오거나 설정합니다.

MessageVersion

바인딩을 사용하여 구성된 클라이언트 및 서비스에서 사용하는 메시지 버전을 가져옵니다.

Name

바인딩의 이름을 가져오거나 설정합니다.

Namespace

바인딩의 XML 네임스페이스를 가져오거나 설정합니다.

OpenTimeout

전송 중에 예외가 발생하기 전에 연결을 설정하기 위해 제공되는 시간 간격을 가져오거나 설정합니다.

ReceiveTimeout

연결이 끊어지기 전에 애플리케이션 메시지가 수신되지 않는 비활성 상태로 유지될 수 있는 시간 간격을 가져오거나 설정합니다.

Scheme

파생 클래스에서 구현될 경우 바인딩에서 작성된 채널 및 수신기 팩터리에 사용되는 전송을 지정하는 URI 체계를 설정합니다.

SendTimeout

전송 중 예외가 발생하기 전에 쓰기 작업을 완료하기 위해 제공되는 시간 간격을 가져오거나 설정합니다.

메서드

BuildChannelFactory<TChannel>(BindingParameterCollection)

지정된 유형의 채널을 만들고 바인딩 매개 변수 컬렉션에서 지정된 기능을 충족하는 채널 팩터리 스택을 클라이언트에 생성합니다.

BuildChannelFactory<TChannel>(Object[])

지정된 유형의 채널을 만들고 개체 배열에서 지정된 기능을 충족하는 채널 팩터리 스택을 클라이언트에 생성합니다.

BuildChannelListener<TChannel>(BindingParameterCollection)

지정된 유형의 채널을 허용하고 바인딩 매개 변수 컬렉션에서 지정된 기능을 충족하는 채널 수신기를 서비스에 생성합니다.

BuildChannelListener<TChannel>(Object[])

지정된 유형의 채널을 허용하고 지정된 기능을 충족하는 채널 수신기를 서비스에 생성합니다.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

지정된 유형의 채널을 허용하고 지정된 기능을 충족하는 채널 수신기를 서비스에 생성합니다.

BuildChannelListener<TChannel>(Uri, Object[])

지정된 유형의 채널을 허용하고 지정된 기능을 충족하는 채널 수신기를 서비스에 생성합니다.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

지정된 유형의 채널을 허용하고 지정된 기능을 충족하는 채널 수신기를 서비스에 생성합니다.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

지정된 유형의 채널을 허용하고 지정된 기능을 충족하는 채널 수신기를 서비스에 생성합니다.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

지정된 유형의 채널을 허용하고 지정된 기능을 충족하는 채널 수신기를 서비스에 생성합니다.

BuildChannelListener<TChannel>(Uri, String, Object[])

지정된 유형의 채널을 허용하고 지정된 기능을 충족하는 채널 수신기를 서비스에 생성합니다.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

현재 바인딩이 지정된 바인딩 매개 변수 컬렉션을 충족하는 채널 팩터리 스택을 클라이언트에 생성할 수 있는지 여부를 나타내는 값을 반환합니다.

CanBuildChannelFactory<TChannel>(Object[])

현재 바인딩이 개체 배열에서 지정된 요구 사항을 충족하는 채널 팩터리 스택을 클라이언트에 생성할 수 있는지 여부를 나타내는 값을 반환합니다.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

현재 바인딩이 지정된 바인딩 매개 변수 컬렉션을 충족하는 채널 수신기 스택을 서비스에 생성할 수 있는지 여부를 나타내는 값을 반환합니다.

CanBuildChannelListener<TChannel>(Object[])

현재 바인딩이 개체 배열에 지정된 기준을 충족하는 채널 수신기 스택을 서비스에 생성할 수 있는지 여부를 나타내는 값을 반환합니다.

CreateBindingElements()

파생 클래스에서 재정의되는 경우 현재 바인딩의 일부인 바인딩 요소를 포함하는 컬렉션을 만듭니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetProperty<T>(BindingParameterCollection)

요청한 형식화된 개체가 있으면 바인딩 스택의 해당 계층에서 반환합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ShouldSerializeName()

바인딩 이름을 serialize해야 하는지 여부를 반환합니다.

ShouldSerializeNamespace()

바인딩 네임스페이스를 serialize해야 하는지 여부를 반환합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상