Binding 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
클라이언트와 서비스 간의 통신에 사용되는 프로토콜, 전송 및 메시지 인코더를 지정하는 바인딩 요소를 포함합니다.
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) |
적용 대상
.NET