ChannelFactory 클래스

정의

클라이언트에서 서비스 엔드포인트로 메시지를 보낼 때 사용하는 채널을 만들고 관리합니다.Creates and manages the channels that are used by clients to send messages to service endpoints.

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

예제

다음 코드 예제에서는 팩터리에서 채널 개체를 만들기 전에 클라이언트 동작을 프로그래밍 방식으로 삽입하는 방법을 보여 줍니다.The following code example shows how to insert programmatically a client behavior prior to the creation of the channel object by the factory.

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 인터페이스를 구현하는 채널 팩터리 및 관련 채널은 일반적으로 통신 패턴의 개시자에서 사용됩니다.Channel factories that implement the IChannelFactory interface and their associated channels are generally used by the initiators of a communication pattern. IChannelListener 인터페이스를 구현하는 수신기 팩터리 및 관련 수신기는 통신을 위해 채널을 수락하는 메커니즘을 제공합니다.Listener factories that implement the IChannelListener interface and their associated listeners provide the mechanisms with which channels are accepted for communications.

이 클래스는 채널 모델이 아니라 서비스 모델에 속해 있습니다.This class is not part of the channel model, but of the service model. CreateFactory 메서드를 사용하면 서비스 엔드포인트에 대한 IChannelFactory를 만들 수 있습니다.The CreateFactory method provides the means to create an IChannelFactory for a service endpoint. 메타데이터나 정책을 사용하지 않고 서비스에서 인터페이스 계약에 연결되는 클라이언트를 생성할 때 이 메서드를 사용합니다.Use it to construct a client that hooks up to an interface contract on the service without using metadata or policy.

참고

ChannelFactory.Credentials.Windows.AllowedImpersonationLevelTokenImpersonationLevel.Anonymous로 설정하면 가장 수준과 관계없이 항상 익명 로그온이 수행됩니다.Setting ChannelFactory.Credentials.Windows.AllowedImpersonationLevel to TokenImpersonationLevel.Anonymous always results in an anonymous logon regardless of impersonation level.

이 클래스에서 파생된 Managed C++ 사용자 관련 참고 사항:Special note for Managed C++ users deriving from this class:

  • 소멸자가 아니라 (On)(Begin)Close 및/또는 OnAbort에 정리 코드를 입력하십시오.Put your cleanup code in (On)(Begin)Close (and/or OnAbort), not in a destructor.

  • 소멸자를 사용하지 마십시오. 소멸자를 사용하면 컴파일러에서 IDisposable을 자동으로 생성할 수 있습니다.Avoid destructors; they cause the compiler to auto-generate IDisposable.

  • 비참조 멤버를 사용하지 마십시오. 비참조 멤버를 사용하면 컴파일러에서 IDisposable을 자동으로 생성할 수 있습니다.Avoid non-reference members; they can cause the compiler to auto-generate IDisposable.

  • 종료자를 사용하지 마십시오. 그러나 종료자를 포함하는 경우 자동으로 생성되는 SuppressFinalize(Object) 동작을 에뮬레이트하기 위해 빌드 경고를 표시하지 않고 (On)(Begin)Close 및/또는 OnAbort에서 IDisposable 및 해당 종료자를 호출해야 합니다.Avoid using a finalizer; but if you include one, you should suppress the build warning and call SuppressFinalize(Object) and the finalizer itself from (On)(Begin)Close (and/or OnAbort) to emulate what would have been the auto-generated IDisposable behavior.

동작을 프로그래밍 방식으로 추가할 경우 동작은 채널이 만들어지기 이전에 Behaviors의 적절한 ChannelFactory 속성에 추가됩니다.When adding behaviors programmatically, the behavior is added to the appropriate Behaviors property on the ChannelFactory prior to the creation of any channel. 코드 예제는 예제 단원을 참조하십시오.See the example section for a code sample.

생성자

ChannelFactory()

ChannelFactory 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ChannelFactory class.

속성

Credentials

팩터리에서 생성한 채널을 통해 클라이언트가 서비스 엔드포인트와 통신할 때 사용하는 자격 증명을 가져옵니다.Gets the credentials used by clients to communicate a service endpoint over the channels produced by the factory.

DefaultCloseTimeout

닫기 작업을 완료하기 위해 제공되는 기본 시간 간격을 가져옵니다.Gets the default interval of time provided for a close operation to complete.

DefaultOpenTimeout

열기 작업을 완료하기 위해 제공되는 기본 시간 간격을 가져옵니다.Gets the default interval of time provided for an open operation to complete.

Endpoint

팩터리에서 만든 채널이 연결되는 서비스 엔드포인트를 가져옵니다.Gets the service endpoint to which the channels produced by the factory connect.

IsDisposed

통신 개체가 삭제되었는지 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether the communication object has been disposed.

(다음에서 상속됨 CommunicationObject)
State

통신 개체의 현재 상태를 나타내는 값을 가져옵니다.Gets a value that indicates the current state of the communication object.

(다음에서 상속됨 CommunicationObject)
ThisLock

상태 전환 중에 클래스 인스턴스를 보호하는 상호 배타적인 전용 잠금을 가져옵니다.Gets the mutually exclusive lock that protects the class instance during a state transition.

(다음에서 상속됨 CommunicationObject)

메서드

Abort()

통신 개체가 현재 상태에서 Closing 상태로 즉시 전환되도록 합니다.Causes a communication object to transition immediately from its current state into the closing state.

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

지정된 구성 파일에서 제공한 동작 및 채널 팩터리의 서비스 엔드포인트에 있는 동작을 통해 채널 팩터리를 초기화합니다.Initializes the channel factory with the behaviors provided by a specified configuration file and with those in the service endpoint of the channel factory.

BeginClose(AsyncCallback, Object)

통신 개체를 닫기 위한 비동기 작업을 시작합니다.Begins an asynchronous operation to close a communication object.

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

지정된 제한 시간 내에서 통신 개체를 닫기 위한 비동기 작업을 시작합니다.Begins an asynchronous operation to close a communication object with a specified timeout.

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

통신 개체를 열기 위한 비동기 작업을 시작합니다.Begins an asynchronous operation to open a communication object.

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

지정된 시간 간격 내에서 통신 개체를 열기 위한 비동기 작업을 시작합니다.Begins an asynchronous operation to open a communication object within a specified interval of time.

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

통신 개체가 현재 상태에서 Closed 상태로 전환되도록 합니다.Causes a communication object to transition from its current state into the closed state.

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

통신 개체가 지정된 시간 간격 내에 현재 상태에서 Closed 상태로 전환되도록 합니다.Causes a communication object to transition from its current state into the closed state within a specified interval of time.

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

파생 클래스에서 구현되는 경우 채널 팩터리와 연결된 서비스 엔드포인트에 대한 설명을 만듭니다.When implemented in a derived class, creates a description of the service endpoint associated with the channel factory.

CreateFactory()

팩터리의 현재 엔드포인트에 대해 채널 팩터리를 생성합니다.Builds the channel factory for the current endpoint of the factory.

EndClose(IAsyncResult)

통신 개체를 닫기 위한 비동기 작업을 완료합니다.Completes an asynchronous operation to close a communication object.

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

통신 개체를 열기 위한 비동기 작업을 완료합니다.Completes an asynchronous operation to open a communication object.

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

현재 채널 팩터리가 아직 열리지 않은 경우 이를 엽니다.Opens the current channel factory if it is not yet opened.

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

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

통신 개체가 현재 상태에서 Faulted 상태로 전환되도록 합니다.Causes a communication object to transition from its current state into the faulted state.

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

통신 개체의 형식을 가져옵니다.Gets the type of communication object.

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

기본 해시 함수로 작동합니다.Serves as the default hash function.

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

요청한 형식의 개체가 있으면 채널 스택의 해당 계층에서 그 개체를 반환하고, 개체가 없으면 null을 반환합니다.Returns the typed object requested, if present, from the appropriate layer in the channel stack, or null if not present.

GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

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

지정된 바인딩 및 주소를 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다.Initializes the service endpoint of the channel factory with a specified binding and address.

InitializeEndpoint(ServiceEndpoint)

지정된 엔드포인트를 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다.Initializes the service endpoint of the channel factory with a specified endpoint.

InitializeEndpoint(String, EndpointAddress)

지정된 주소 및 구성을 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다.Initializes the service endpoint of the channel factory with a specified address and configuration.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

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

현재 채널 팩터리의 내부 채널 팩터리를 종료합니다.Terminates the inner channel factory of the current channel factory.

OnBeginClose(TimeSpan, AsyncCallback, Object)

연결된 상태 개체가 있는 현재 채널 팩터리의 내부 채널 팩터리에서 비동기 닫기 작업을 시작합니다.Begins an asynchronous close operation on the inner channel factory of the current channel factory that has a state object associated with it.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

연결된 상태 개체가 있는 현재 채널 팩터리의 내부 채널 팩터리에서 비동기 열기 작업을 시작합니다.Begins an asynchronous open operation on the inner channel factory of the current channel factory that has a state object associated with it.

OnClose(TimeSpan)

작업 완료를 위해 지정된 시간 제한을 사용하여 내부 채널 팩터리에 대한 닫기를 호출합니다.Calls close on the inner channel factory with a specified time-out for the completion of the operation.

OnClosed()

통신 개체가 Closing 상태로 전환되는 중에 호출됩니다.Invoked during the transition of a communication object into the closing state.

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

통신 개체가 Closing 상태로 전환되는 중에 호출됩니다.Invoked during the transition of a communication object into the closing state.

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

현재 채널 팩터리의 내부 채널 팩터리에 대한 비동기 닫기 작업을 완료합니다.Completes an asynchronous close operation on the inner channel factory of the current channel factory.

OnEndOpen(IAsyncResult)

현재 채널 팩터리의 내부 채널 팩터리에 대한 비동기 열기 작업을 완료합니다.Completes an asynchronous open operation on the inner channel factory of the current channel factory.

OnFaulted()

통신 개체가 동기 오류 작업의 호출로 인해 Faulted 상태로 전환된 후 해당 통신 개체에 대한 처리를 삽입합니다.Inserts processing on a communication object after it transitions to the faulted state due to the invocation of a synchronous fault operation.

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

작업 완료를 위해 지정된 시간 제한을 사용하여 현재 채널 팩터리의 내부 채널 팩터리에 대한 열기를 호출합니다.Calls open on the inner channel factory of the current channel factory with a specified time-out for the completion of the operation.

OnOpened()

채널 팩터리에 대한 ClientCredentials 개체의 읽기 전용 복사본을 초기화합니다.Initializes a read-only copy of the ClientCredentials object for the channel factory.

OnOpening()

현재 채널의 내부 채널 팩터리를 생성합니다.Builds the inner channel factory for the current channel.

Open()

통신 개체가 Created 상태에서 Opened 상태로 전환되도록 합니다.Causes a communication object to transition from the created state into the opened state.

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

통신 개체가 지정된 시간 간격 내에 Created 상태에서 Opened 상태로 전환되도록 합니다.Causes a communication object to transition from the created state into the opened state within a specified interval of time.

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

통신 개체가 삭제되면 예외를 throw합니다.Throws an exception if the communication object is disposed.

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

통신 개체의 State 속성이 Created 상태로 설정되지 않은 경우 예외를 throw합니다.Throws an exception if the communication object the State property is not set to the Created state.

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

통신 개체가 Opened 상태가 아니면 예외를 throw합니다.Throws an exception if the communication object is not in the Opened state.

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

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

이벤트

Closed

통신 개체가 Closed 상태로 전환될 때 발생합니다.Occurs when a communication object transitions into the closed state.

(다음에서 상속됨 CommunicationObject)
Closing

통신 개체가 Closing 상태로 전환될 때 발생합니다.Occurs when a communication object transitions into the closing state.

(다음에서 상속됨 CommunicationObject)
Faulted

통신 개체가 Faulted 상태로 전환될 때 발생합니다.Occurs when a communication object transitions into the faulted state.

(다음에서 상속됨 CommunicationObject)
Opened

통신 개체가 Opened 상태로 전환될 때 발생합니다.Occurs when a communication object transitions into the opened state.

(다음에서 상속됨 CommunicationObject)
Opening

통신 개체가 Opening 상태로 전환될 때 발생합니다.Occurs when a communication object transitions into the opening state.

(다음에서 상속됨 CommunicationObject)

명시적 인터페이스 구현

IDisposable.Dispose()

현재 채널 팩터리를 닫습니다.Closes the current channel factory.

적용 대상