ChannelFactory Classe

Definição

Cria e gerencia os canais usados pelos clientes para enviar mensagens a pontos de extremidade de serviço.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
Herança
ChannelFactory
Derivado
Implementações

Exemplos

O exemplo de código a seguir mostra como inserir programaticamente um comportamento de cliente antes da criação do objeto de canal pela fábrica.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

Comentários

Fábricas de canal que implementam a interface IChannelFactory e seus canais associados geralmente são usados pelos iniciadores de um padrão de comunicação.Channel factories that implement the IChannelFactory interface and their associated channels are generally used by the initiators of a communication pattern. As fábricas de ouvinte que implementam a interface IChannelListener e seus ouvintes associados fornecem os mecanismos com os quais os canais são aceitos para comunicações.Listener factories that implement the IChannelListener interface and their associated listeners provide the mechanisms with which channels are accepted for communications.

Essa classe não faz parte do modelo de canal, mas sim do modelo de serviço.This class is not part of the channel model, but of the service model. O método CreateFactory fornece os meios para criar um IChannelFactory para um ponto de extremidade de serviço.The CreateFactory method provides the means to create an IChannelFactory for a service endpoint. Use-o para construir um cliente que se conecta a um contrato de interface no serviço sem usar metadados ou política.Use it to construct a client that hooks up to an interface contract on the service without using metadata or policy.

Observação

Definir ChannelFactory.Credentials.Windows.AllowedImpersonationLevel como TokenImpersonationLevel.Anonymous sempre resulta em um logon anônimo, independentemente do nível de representação.Setting ChannelFactory.Credentials.Windows.AllowedImpersonationLevel to TokenImpersonationLevel.Anonymous always results in an anonymous logon regardless of impersonation level.

Nota especial para usuários C++ gerenciados que derivam desta classe:Special note for Managed C++ users deriving from this class:

  • Coloque seu código de limpeza em (ativado) (início) fechar (e/ou OnAbort), não em um destruidor.Put your cleanup code in (On)(Begin)Close (and/or OnAbort), not in a destructor.

  • Evitar destruidores; Eles fazem com que o compilador gere automaticamente IDisposable.Avoid destructors; they cause the compiler to auto-generate IDisposable.

  • Evitar Membros que não são de referência; Eles podem fazer com que o compilador gere automaticamente IDisposable.Avoid non-reference members; they can cause the compiler to auto-generate IDisposable.

  • Evite usar um finalizador; Mas se você incluir um, deverá suprimir o aviso de compilação e chamar SuppressFinalize(Object) e o finalizador em si, de (on) (Begin) Close (e/ou OnAbort) para emular o que teria sido o comportamento de IDisposable gerado automaticamente.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.

Ao adicionar comportamentos programaticamente, o comportamento é adicionado à propriedade Behaviors apropriada no ChannelFactory antes da criação de qualquer canal.When adding behaviors programmatically, the behavior is added to the appropriate Behaviors property on the ChannelFactory prior to the creation of any channel. Consulte a seção de exemplo para obter um exemplo de código.See the example section for a code sample.

Construtores

ChannelFactory()

Inicializa uma nova instância da classe ChannelFactory.Initializes a new instance of the ChannelFactory class.

Propriedades

Credentials

Obtém as credenciais usadas pelos clientes para comunicação com um ponto de extremidade de serviço pelos canais produzidos pela fábrica.Gets the credentials used by clients to communicate a service endpoint over the channels produced by the factory.

DefaultCloseTimeout

Obtém o intervalo de tempo padrão fornecido para a conclusão de uma operação close.Gets the default interval of time provided for a close operation to complete.

DefaultOpenTimeout

Obtém o intervalo de tempo padrão fornecido para a conclusão de uma operação open.Gets the default interval of time provided for an open operation to complete.

Endpoint

Obtém o ponto de extremidade de serviço ao qual os canais produzidos pela fábrica se conectam.Gets the service endpoint to which the channels produced by the factory connect.

IsDisposed

Obtém um valor que indica se o objeto de comunicação foi descartado.Gets a value that indicates whether the communication object has been disposed.

(Herdado de CommunicationObject)
State

Obtém um valor que indica o estado atual do objeto de comunicação.Gets a value that indicates the current state of the communication object.

(Herdado de CommunicationObject)
ThisLock

Obtém o bloqueio mutuamente exclusivo que protege a instância da classe durante uma transição de estado.Gets the mutually exclusive lock that protects the class instance during a state transition.

(Herdado de CommunicationObject)

Métodos

Abort()

Faz com que um objeto de comunicação faça a transição imediata do estado atual para o estado de fechamento.Causes a communication object to transition immediately from its current state into the closing state.

(Herdado de CommunicationObject)
ApplyConfiguration(String)

Inicializa a fábrica de canais com os comportamentos fornecidos por um arquivo de configuração especificado e com aqueles no ponto de extremidade de serviço da fábrica de canais.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)

Inicia uma operação assíncrona para fechar um objeto de comunicação.Begins an asynchronous operation to close a communication object.

(Herdado de CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Inicia uma operação assíncrona para fechar um objeto de comunicação com um tempo limite especificado.Begins an asynchronous operation to close a communication object with a specified timeout.

(Herdado de CommunicationObject)
BeginOpen(AsyncCallback, Object)

Inicia uma operação assíncrona para abrir um objeto de comunicação.Begins an asynchronous operation to open a communication object.

(Herdado de CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Inicia uma operação assíncrona para abrir um objeto de comunicação dentro de um intervalo de tempo especificado.Begins an asynchronous operation to open a communication object within a specified interval of time.

(Herdado de CommunicationObject)
Close()

Faz com que um objeto de comunicação faça a transição do estado atual para o estado fechado.Causes a communication object to transition from its current state into the closed state.

(Herdado de CommunicationObject)
Close(TimeSpan)

Faz com que um objeto de comunicação faça a transição do estado atual para o estado fechado dentro de um intervalo de tempo especificado.Causes a communication object to transition from its current state into the closed state within a specified interval of time.

(Herdado de CommunicationObject)
CreateDescription()

Quando implementada em uma classe derivada, cria uma descrição do ponto de extremidade de serviço associado com a fábrica de canais.When implemented in a derived class, creates a description of the service endpoint associated with the channel factory.

CreateFactory()

Cria a fábrica de canais para o ponto de extremidade atual da fábrica.Builds the channel factory for the current endpoint of the factory.

EndClose(IAsyncResult)

Conclui uma operação assíncrona para fechar um objeto de comunicação.Completes an asynchronous operation to close a communication object.

(Herdado de CommunicationObject)
EndOpen(IAsyncResult)

Conclui uma operação assíncrona para abrir um objeto de comunicação.Completes an asynchronous operation to open a communication object.

(Herdado de CommunicationObject)
EnsureOpened()

Abre a fábrica de canais atual se ela ainda não estiver aberta.Opens the current channel factory if it is not yet opened.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
Fault()

Faz com que um objeto de comunicação faça a transição do estado atual para o estado com falha.Causes a communication object to transition from its current state into the faulted state.

(Herdado de CommunicationObject)
GetCommunicationObjectType()

Obtém o tipo de objeto de comunicação.Gets the type of communication object.

(Herdado de CommunicationObject)
GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetProperty<T>()

Retorna o objeto tipado solicitado, se presente, da camada apropriada na pilha de canais ou null, se ele não está presente.Returns the typed object requested, if present, from the appropriate layer in the channel stack, or null if not present.

GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
InitializeEndpoint(Binding, EndpointAddress)

Inicializa o ponto de extremidade de serviço da fábrica de canais com uma associação e endereço especificados.Initializes the service endpoint of the channel factory with a specified binding and address.

InitializeEndpoint(ServiceEndpoint)

Inicializa o ponto de extremidade de serviço da fábrica de canais com um ponto de extremidade especificado.Initializes the service endpoint of the channel factory with a specified endpoint.

InitializeEndpoint(String, EndpointAddress)

Inicializa o ponto de extremidade de serviço da fábrica de canais com uma configuração e endereço especificados.Initializes the service endpoint of the channel factory with a specified address and configuration.

MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
OnAbort()

Finaliza a fábrica de canais interna da fábrica de canais atual.Terminates the inner channel factory of the current channel factory.

OnBeginClose(TimeSpan, AsyncCallback, Object)

Inicia uma operação close assíncrona na fábrica de canais interna da fábrica de canais atual que tem um objeto de estado associado a ela.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)

Inicia uma operação open assíncrona na fábrica de canais interna da fábrica de canais atual que tem um objeto de estado associado a ela.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)

Chama close na fábrica de canais interna com um tempo limite especificado para a conclusão da operação.Calls close on the inner channel factory with a specified time-out for the completion of the operation.

OnClosed()

Chamada durante a transição de um objeto de comunicação para o estado de fechamento.Invoked during the transition of a communication object into the closing state.

(Herdado de CommunicationObject)
OnClosing()

Chamada durante a transição de um objeto de comunicação para o estado de fechamento.Invoked during the transition of a communication object into the closing state.

(Herdado de CommunicationObject)
OnEndClose(IAsyncResult)

Completa uma operação close assíncrona na fábrica de canais interna da fábrica de canais atual.Completes an asynchronous close operation on the inner channel factory of the current channel factory.

OnEndOpen(IAsyncResult)

Completa uma operação open assíncrona na fábrica de canais interna da fábrica de canais atual.Completes an asynchronous open operation on the inner channel factory of the current channel factory.

OnFaulted()

Insere o processamento em um objeto de comunicação depois que ela fez a transição para o estado de fechamento devido à invocação de uma operação fault síncrona.Inserts processing on a communication object after it transitions to the faulted state due to the invocation of a synchronous fault operation.

(Herdado de CommunicationObject)
OnOpen(TimeSpan)

Chama open na fábrica de canais interna da fábrica de canais atual com um tempo limite especificado para a conclusão da operação.Calls open on the inner channel factory of the current channel factory with a specified time-out for the completion of the operation.

OnOpened()

Inicializa uma cópia somente leitura do objeto ClientCredentials para a fábrica de canais.Initializes a read-only copy of the ClientCredentials object for the channel factory.

OnOpening()

Cria a fábrica de canais interna da fábrica de canais atual.Builds the inner channel factory for the current channel.

Open()

Faz com que um objeto de comunicação faça a transição do estado criado para o estado aberto.Causes a communication object to transition from the created state into the opened state.

(Herdado de CommunicationObject)
Open(TimeSpan)

Faz com que um objeto de comunicação faça a transição do estado criado para o estado aberto em um intervalo de tempo especificado.Causes a communication object to transition from the created state into the opened state within a specified interval of time.

(Herdado de CommunicationObject)
ThrowIfDisposed()

Gera uma exceção se o objeto de comunicação é descartado.Throws an exception if the communication object is disposed.

(Herdado de CommunicationObject)
ThrowIfDisposedOrImmutable()

Gera uma exceção se o objeto de comunicação da propriedade State não estiver definido para o estado Created.Throws an exception if the communication object the State property is not set to the Created state.

(Herdado de CommunicationObject)
ThrowIfDisposedOrNotOpen()

Gera uma exceção se o objeto de comunicação não estiver no estado Opened.Throws an exception if the communication object is not in the Opened state.

(Herdado de CommunicationObject)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Eventos

Closed

Ocorre quando um objeto de comunicação entra no estado fechado.Occurs when a communication object transitions into the closed state.

(Herdado de CommunicationObject)
Closing

Ocorre quando um objeto de comunicação faz a transição para o estado fechado.Occurs when a communication object transitions into the closing state.

(Herdado de CommunicationObject)
Faulted

Ocorre quando um objeto de comunicação entra em um estado de falha.Occurs when a communication object transitions into the faulted state.

(Herdado de CommunicationObject)
Opened

Ocorre quando um objeto de comunicação faz a transição para o estado aberto.Occurs when a communication object transitions into the opened state.

(Herdado de CommunicationObject)
Opening

Ocorre quando um objeto de comunicação faz a transição para o estado de abertura.Occurs when a communication object transitions into the opening state.

(Herdado de CommunicationObject)

Implantações explícitas de interface

IDisposable.Dispose()

Fecha a fábrica de canais atual.Closes the current channel factory.

Aplica-se a