다음을 통해 공유


ChannelDispatcher 클래스

정의

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

public ref class ChannelDispatcher : System::ServiceModel::Dispatcher::ChannelDispatcherBase
public class ChannelDispatcher : System.ServiceModel.Dispatcher.ChannelDispatcherBase
type ChannelDispatcher = class
    inherit ChannelDispatcherBase
Public Class ChannelDispatcher
Inherits ChannelDispatcherBase
상속

예제

Uri baseAddress = new Uri("http://localhost:8001/Simple");
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);

serviceHost.AddServiceEndpoint(
    typeof(ICalculator),
    new WSHttpBinding(),
    "CalculatorServiceObject");

// Enable MEX.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
serviceHost.Description.Behaviors.Add(smb);

serviceHost.Open();

IChannelListener icl = serviceHost.ChannelDispatchers[0].Listener;
ChannelDispatcher dispatcher = new ChannelDispatcher(icl);
Console.WriteLine("servicehost has {0} ChannelDispatchers", serviceHost.ChannelDispatchers.Count);
ChannelDispatcherCollection dispatchers = serviceHost.ChannelDispatchers;

foreach (ChannelDispatcher disp in dispatchers)
{
    Console.WriteLine("Binding name: " + disp.BindingName);
}

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();
Dim baseAddress As New Uri("http://localhost:8001/Simple")
Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)

serviceHost.AddServiceEndpoint(GetType(ICalculator), New WSHttpBinding(), "CalculatorServiceObject")

' Enable MEX.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
serviceHost.Description.Behaviors.Add(smb)

serviceHost.Open()

Dim icl As IChannelListener = serviceHost.ChannelDispatchers(0).Listener
Dim dispatcher As New ChannelDispatcher(icl)
Console.WriteLine("servicehost has {0} ChannelDispatchers", serviceHost.ChannelDispatchers.Count)
Dim dispatchers As ChannelDispatcherCollection = serviceHost.ChannelDispatchers

For Each disp As ChannelDispatcher In dispatchers
    Console.WriteLine("Binding name: " & disp.BindingName)
Next disp

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()

설명

ChannelDispatcher 개체는 특정 URI(수신 URI)의 IChannelListener를 서비스 인스턴스에 연결합니다. 각 ServiceHost 개체는 해당 서비스에 대한 서로 다른 수신기 및 수신 URI에 연결된 여러 개의 ChannelDispatcher 개체를 가질 수 있습니다.

메시지가 도착하면 ChannelDispatcher는 연관된 각 EndpointDispatcher 개체에 쿼리하여 엔드포인트에서 메시지를 수락할 수 있는지 여부를 확인한 다음 수락할 수 있는 엔드포인트에 메시지를 전달합니다. EndpointDispatcher 개체는 메시지의 대상 주소가 ChannelDispatcher 속성과 일치하고 메시지 동작이 AddressFilter 속성과 일치할 경우 ContractFilter로부터 받는 메시지를 처리합니다.

채널 세션의 수명과 동작을 제어하는 모든 속성을 사용하여 ChannelDispatcher 개체를 검사하거나 수정할 수 있습니다. 여기에는 EndpointDispatcher 외에도 사용자 지정 IChannelInitializer 개체, IChannelListener, ServiceHost 및 연결된 InstanceContext가 포함됩니다.

생성자

ChannelDispatcher(IChannelListener)

ChannelDispatcher 클래스의 새 인스턴스를 초기화합니다.

ChannelDispatcher(IChannelListener, String)

ChannelDispatcher 클래스의 새 인스턴스를 초기화합니다.

ChannelDispatcher(IChannelListener, String, IDefaultCommunicationTimeouts)

ChannelDispatcher 클래스의 새 인스턴스를 초기화합니다.

속성

AsynchronousTransactedAcceptEnabled

수신기에 대해 처리된 Accept 메서드 호출이 비동기적인지 여부를 나타내는 값을 가져옵니다.

BindingName

서비스를 구성하는 데 사용되는 바인딩의 이름을 가져옵니다.

ChannelInitializers

채널을 처음 만들 때 채널을 검사하고 상태를 추가하는 데 사용할 수 있는 IChannelInitializer 개체 집합을 가져옵니다.

DefaultCloseTimeout

채널 디스패처를 닫는 데 허용되는 기본 시간 간격을 가져옵니다.

DefaultOpenTimeout

채널 디스패처를 여는 데 허용되는 기본 시간 간격을 가져옵니다.

Endpoints

메시지를 채널 엔드포인트에 전달하는 엔드포인트 디스패처를 가져옵니다.

ErrorHandlers

엔드포인트에 대한 사용자 지정 오류 처리 기능을 삽입하는 데 사용할 수 있는 IErrorHandler 개체 집합을 가져옵니다.

Host

디스패처에 연결된 서비스에 대한 호스트를 가져옵니다.

Host

파생 클래스에서 재정의된 경우 채널 디스패처에 연결된 서비스 호스트를 가져옵니다.

(다음에서 상속됨 ChannelDispatcherBase)
IncludeExceptionDetailInFaults

오류에 예외에 대한 세부 정보를 포함시킬지 여부를 나타내는 값을 가져오거나 설정합니다.

IsDisposed

통신 개체가 삭제되었는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 CommunicationObject)
IsTransactedAccept

수신기에 대한 Accept 메서드 호출이 트랜잭션에서 수행되는지 여부를 나타내는 값을 가져옵니다.

IsTransactedReceive

수신기에 대한 Receive 메서드 호출이 트랜잭션에서 수행되는지 여부를 나타내는 값을 가져옵니다.

Listener

채널 디스패처에 연결된 수신기를 가져옵니다.

ManualAddressing

채널 디스패처에서 요청/응답 메시지에 주소 헤더를 추가하는지 여부를 나타내는 값을 가져오거나 설정합니다.

MaxPendingReceives

채널당 허용되는 보류 메시지의 최대 수를 가져오거나 설정합니다.

MaxTransactedBatchSize

트랜잭션된 일괄 처리의 최대 크기를 가져오거나 설정합니다.

MessageVersion

사용되거나 예상되는 SOAP 메시지 및 WS-Addressing 버전을 가져오거나 설정합니다.

ReceiveContextEnabled

ReceiveContext의 사용 여부를 가져오거나 설정합니다.

ReceiveSynchronously

디스패처가 동기 호출을 사용하여 채널에서 메시지를 읽는지 여부를 지정하는 값을 가져오거나 설정합니다.

SendAsynchronously

메시지의 비동기 전송 여부를 가져오거나 설정합니다.

ServiceThrottle

채널 디스패처에 연결된 서비스에 대한 서비스 스로틀을 가져오거나 설정합니다.

State

통신 개체의 현재 상태를 나타내는 값을 가져옵니다.

(다음에서 상속됨 CommunicationObject)
ThisLock

상태 전환 중에 클래스 인스턴스를 보호하는 상호 배타적인 전용 잠금을 가져옵니다.

(다음에서 상속됨 CommunicationObject)
TransactionIsolationLevel

트랜잭션의 기본 격리 수준을 가져오거나 설정합니다.

TransactionTimeout

서비스 대신 디스패처에서 만든 새 트랜잭션의 기본 제한 시간을 지정하는 값을 가져오거나 설정합니다.

메서드

Abort()

통신 개체가 현재 상태에서 Closing 상태로 즉시 전환되도록 합니다.

(다음에서 상속됨 CommunicationObject)
Attach(ServiceHostBase)

채널 디스패처를 호스트에 연결합니다.

Attach(ServiceHostBase)

파생 클래스에서 재정의된 경우 채널 디스패처를 특정 호스트에 연결합니다.

(다음에서 상속됨 ChannelDispatcherBase)
BeginClose(AsyncCallback, Object)

통신 개체를 닫기 위한 비동기 작업을 시작합니다.

(다음에서 상속됨 CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

지정된 제한 시간 내에서 통신 개체를 닫기 위한 비동기 작업을 시작합니다.

(다음에서 상속됨 CommunicationObject)
BeginOpen(AsyncCallback, Object)

통신 개체를 열기 위한 비동기 작업을 시작합니다.

(다음에서 상속됨 CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

지정된 시간 간격 내에서 통신 개체를 열기 위한 비동기 작업을 시작합니다.

(다음에서 상속됨 CommunicationObject)
Close()

통신 개체가 현재 상태에서 Closed 상태로 전환되도록 합니다.

(다음에서 상속됨 CommunicationObject)
Close(TimeSpan)

통신 개체가 지정된 시간 간격 내에 현재 상태에서 Closed 상태로 전환되도록 합니다.

(다음에서 상속됨 CommunicationObject)
CloseInput()

수신기에서 새 채널을 수락하지 못하도록 합니다.

Detach(ServiceHostBase)

서비스 호스트를 채널 디스패처에서 분리합니다.

Detach(ServiceHostBase)

파생 클래스에서 재정의된 경우 채널 디스패처를 특정 호스트에서 분리합니다.

(다음에서 상속됨 ChannelDispatcherBase)
EndClose(IAsyncResult)

통신 개체를 닫기 위한 비동기 작업을 완료합니다.

(다음에서 상속됨 CommunicationObject)
EndOpen(IAsyncResult)

통신 개체를 열기 위한 비동기 작업을 완료합니다.

(다음에서 상속됨 CommunicationObject)
Equals(Object)

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

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

통신 개체가 현재 상태에서 Faulted 상태로 전환되도록 합니다.

(다음에서 상속됨 CommunicationObject)
GetCommunicationObjectType()

통신 개체의 형식을 가져옵니다.

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

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

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

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

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

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

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

채널 디스패처에 연결된 수신기를 중지합니다.

OnBeginClose(TimeSpan, AsyncCallback, Object)

지정된 시간 간격 내에 완료해야 하는 디스패처의 채널 수신기를 닫기 위해 비동기 작업을 시작합니다.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

지정된 시간 간격 내에 완료해야 하는 디스패처의 채널 수신기를 열기 위해 비동기 작업을 시작합니다.

OnClose(TimeSpan)

지정된 시간 간격 내에 디스패처에 연결된 채널 수신기를 닫습니다.

OnCloseAsync(TimeSpan)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

OnCloseAsync(TimeSpan)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

(다음에서 상속됨 CommunicationObject)
OnClosed()

채널 디스패처에 연결된 엔드포인트 디스패처의 닫기를 추적합니다.

OnClosing()

통신 개체가 Closing 상태로 전환되는 중에 호출됩니다.

(다음에서 상속됨 CommunicationObject)
OnEndClose(IAsyncResult)

디스패처의 채널 수신기를 닫기 위해 비동기 작업을 완료합니다.

OnEndOpen(IAsyncResult)

디스패처의 채널 수신기를 열기 위해 비동기 작업을 완료합니다.

OnFaulted()

통신 개체가 동기 오류 작업의 호출로 인해 Faulted 상태로 전환된 후 해당 통신 개체에 대한 처리를 삽입합니다.

(다음에서 상속됨 CommunicationObject)
OnOpen(TimeSpan)

채널 디스패처에 연결된 수신기를 엽니다.

OnOpenAsync(TimeSpan)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

OnOpenAsync(TimeSpan)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

(다음에서 상속됨 CommunicationObject)
OnOpened()

엔드포인트에 디스패치하는 데 사용되는 필터 테이블을 채우고 유효성을 검사합니다.

OnOpening()

채널 디스패처가 호스트에 연결되는지 여부를 확인합니다.

Open()

통신 개체가 Created 상태에서 Opened 상태로 전환되도록 합니다.

(다음에서 상속됨 CommunicationObject)
Open(TimeSpan)

통신 개체가 지정된 시간 간격 내에 Created 상태에서 Opened 상태로 전환되도록 합니다.

(다음에서 상속됨 CommunicationObject)
ThrowIfDisposed()

통신 개체가 삭제되면 예외를 throw합니다.

(다음에서 상속됨 CommunicationObject)
ThrowIfDisposedOrImmutable()

통신 개체의 State 속성이 Created 상태로 설정되지 않은 경우 예외를 throw합니다.

(다음에서 상속됨 CommunicationObject)
ThrowIfDisposedOrNotOpen()

통신 개체가 Opened 상태가 아니면 예외를 throw합니다.

(다음에서 상속됨 CommunicationObject)
ToString()

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

(다음에서 상속됨 Object)

이벤트

Closed

통신 개체가 Closed 상태로 전환될 때 발생합니다.

(다음에서 상속됨 CommunicationObject)
Closing

통신 개체가 Closing 상태로 전환될 때 발생합니다.

(다음에서 상속됨 CommunicationObject)
Faulted

통신 개체가 Faulted 상태로 전환될 때 발생합니다.

(다음에서 상속됨 CommunicationObject)
Opened

통신 개체가 Opened 상태로 전환될 때 발생합니다.

(다음에서 상속됨 CommunicationObject)
Opening

통신 개체가 Opening 상태로 전환될 때 발생합니다.

(다음에서 상속됨 CommunicationObject)

명시적 인터페이스 구현

IAsyncCommunicationObject.CloseAsync(TimeSpan)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

(다음에서 상속됨 CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

(다음에서 상속됨 CommunicationObject)

확장 메서드

CloseHelperAsync(ICommunicationObject, TimeSpan)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

OpenHelperAsync(ICommunicationObject, TimeSpan)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

GetInternalCloseTimeout(CommunicationObject)

채널을 수락하여 서비스에 연결하는 구성 요소입니다.

적용 대상