다음을 통해 공유


ChannelFactory 클래스

정의

클라이언트가 서비스 엔드포인트에 메시지를 보내는 데 사용하는 채널을 만들고 관리합니다.

public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::Channels::IChannelFactory
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IAsyncDisposable, IDisposable, System::ServiceModel::Channels::IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IDisposable, System.ServiceModel.Channels.IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IAsyncDisposable, IDisposable, System.ServiceModel.Channels.IChannelFactory
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
    interface IAsyncDisposable
type ChannelFactory = class
    inherit CommunicationObject
    interface IChannelFactory
    interface ICommunicationObject
    interface IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IAsyncDisposable, IChannelFactory, IDisposable
상속
ChannelFactory
파생
구현

예제

다음 코드 예제에서는 팩터리에서 채널 개체를 만들기 전에 프로그래밍 방식으로 클라이언트 동작을 삽입하는 방법을 보여 줍니다.

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
  Public Shared Sub Main()
    Try
      ' Picks up configuration from the config file.
      Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

      ' Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

      Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()

      ' Done with service. 
      wcfClientChannel.Close()
      Console.WriteLine("Done!")
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      Console.Read()
    Catch fault As FaultException(Of SampleFault)
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
      Console.Read()
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message)
      Console.Read()
    End Try
  End Sub

설명

IChannelFactory 인터페이스 및 관련 채널을 구현하는 채널 팩터리에서는 일반적으로 통신 패턴의 초기자에서 사용됩니다. IChannelListener 인터페이스 및 연결된 수신기를 구현하는 수신기 팩터리에서는 통신을 위해 채널이 허용되는 메커니즘을 제공합니다.

이 클래스는 채널 모델의 일부가 아니라 서비스 모델의 일부입니다. CreateFactory 메서드는 서비스 엔드포인트에 대한 IChannelFactory 만드는 방법을 제공합니다. 이를 사용하여 메타데이터 또는 정책을 사용하지 않고 서비스에서 인터페이스 계약에 연결하는 클라이언트를 생성합니다.

메모

ChannelFactory.Credentials.Windows.AllowedImpersonationLevel TokenImpersonationLevel.Anonymous 설정하면 가장 수준에 관계없이 항상 익명 로그온이 발생합니다.

이 클래스에서 파생되는 관리되는 C++ 사용자를 위한 특별 참고 사항:

  • 소멸자가 아닌 (On)(Begin)Close(및/또는 OnAbort)에 정리 코드를 넣습니다.

  • 소멸자를 방지합니다. 컴파일러가 IDisposable자동으로 생성합니다.

  • 참조가 아닌 멤버를 사용하지 않습니다. 컴파일러에서 IDisposable자동으로 생성할 수 있습니다.

  • 종료자를 사용하지 않습니다. 그러나 빌드 경고를 표시하지 않고 (On)(Begin)Close(및/또는 OnAbort)에서 SuppressFinalize(Object) 및 종료자 자체를 호출하여 자동으로 생성된 IDisposable 동작을 에뮬레이트해야 합니다.

프로그래밍 방식으로 동작을 추가할 때 동작은 채널을 만들기 전에 ChannelFactory 적절한 Behaviors 속성에 추가됩니다. 코드 샘플에 대한 예제 섹션을 참조하세요.

생성자

ChannelFactory()

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

속성

Credentials

팩터리에서 생성된 채널을 통해 서비스 엔드포인트를 통신하기 위해 클라이언트에서 사용하는 자격 증명을 가져옵니다.

DefaultCloseTimeout

닫기 작업을 완료하기 위해 제공되는 기본 시간 간격을 가져옵니다.

DefaultOpenTimeout

열기 작업을 완료하기 위해 제공되는 기본 시간 간격을 가져옵니다.

Endpoint

팩터리에서 생성된 채널이 연결되는 서비스 엔드포인트를 가져옵니다.

IsDisposed

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

(다음에서 상속됨 CommunicationObject)
State

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

(다음에서 상속됨 CommunicationObject)
ThisLock

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

(다음에서 상속됨 CommunicationObject)

메서드

Abort()

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

(다음에서 상속됨 CommunicationObject)
ApplyConfiguration(String)

지정된 구성 파일 및 채널 팩터리의 서비스 엔드포인트에 있는 동작을 사용하여 채널 팩터리를 초기화합니다.

BeginClose(AsyncCallback, Object)

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

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

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

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

통신 개체를 여는 비동기 작업을 시작합니다.

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

지정된 시간 간격 내에 통신 개체를 여는 비동기 작업을 시작합니다.

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

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

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

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

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

파생 클래스에서 구현되는 경우 채널 팩터리에 연결된 서비스 엔드포인트에 대한 설명을 만듭니다.

CreateFactory()

팩터리의 현재 엔드포인트에 대한 채널 팩터리를 빌드합니다.

EndClose(IAsyncResult)

비동기 작업을 완료하여 통신 개체를 닫습니다.

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

통신 개체를 여는 비동기 작업을 완료합니다.

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

아직 열리지 않은 경우 현재 채널 팩터리를 엽니다.

Equals(Object)

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

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

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

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

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

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

기본 해시 함수로 사용됩니다.

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

채널 스택의 적절한 계층에서 요청된 형식화된 개체(있는 경우)를 반환하거나, 없는 경우 null 반환합니다.

GetType()

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

(다음에서 상속됨 Object)
InitializeEndpoint(Binding, EndpointAddress)

지정된 바인딩 및 주소를 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다.

InitializeEndpoint(ServiceEndpoint)

지정된 엔드포인트를 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다.

InitializeEndpoint(String, EndpointAddress)

지정된 주소 및 구성을 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다.

MemberwiseClone()

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

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

현재 채널 팩터리의 내부 채널 팩터리를 종료합니다.

OnBeginClose(TimeSpan, AsyncCallback, Object)

연결된 상태 개체가 있는 현재 채널 팩터리의 내부 채널 팩터리에서 비동기 닫기 작업을 시작합니다.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

연결된 상태 개체가 있는 현재 채널 팩터리의 내부 채널 팩터리에서 비동기 열기 작업을 시작합니다.

OnClose(TimeSpan)

작업 완료를 위해 지정된 시간 제한으로 내부 채널 팩터리에서 닫기를 호출합니다.

OnClosed()

통신 개체를 닫는 상태로 전환하는 동안 호출됩니다.

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

통신 개체를 닫는 상태로 전환하는 동안 호출됩니다.

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

현재 채널 팩터리의 내부 채널 팩터리에서 비동기 닫기 작업을 완료합니다.

OnEndOpen(IAsyncResult)

현재 채널 팩터리의 내부 채널 팩터리에서 비동기 열기 작업을 완료합니다.

OnFaulted()

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

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

작업 완료를 위해 지정된 시간 제한으로 현재 채널 팩터리의 내부 채널 팩터리에서 열린 호출입니다.

OnOpened()

채널 팩터리에 대한 ClientCredentials 개체의 읽기 전용 복사본을 초기화합니다.

OnOpening()

현재 채널에 대한 내부 채널 팩터리를 빌드합니다.

Open()

통신 개체가 생성된 상태에서 열린 상태로 전환되도록 합니다.

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

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

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

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

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

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

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

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

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

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

(다음에서 상속됨 Object)

이벤트

Closed

통신 개체가 닫힌 상태로 전환할 때 발생합니다.

(다음에서 상속됨 CommunicationObject)
Closing

통신 개체가 닫는 상태로 전환할 때 발생합니다.

(다음에서 상속됨 CommunicationObject)
Faulted

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

(다음에서 상속됨 CommunicationObject)
Opened

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

(다음에서 상속됨 CommunicationObject)
Opening

통신 개체가 여는 상태로 전환할 때 발생합니다.

(다음에서 상속됨 CommunicationObject)

명시적 인터페이스 구현

IAsyncDisposable.DisposeAsync()

클라이언트가 서비스 엔드포인트에 메시지를 보내는 데 사용하는 채널을 만들고 관리합니다.

IDisposable.Dispose()

현재 채널 팩터리를 닫습니다.

확장 메서드

ConfigureAwait(IAsyncDisposable, Boolean)

비동기 삭제 가능 파일에서 반환된 작업에 대한 대기가 수행되는 방법을 구성합니다.

적용 대상