ChannelFactory Classe

Definição

Cria e gerencia os canais usados pelos clientes para enviar mensagens a pontos de extremidade de serviço.

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 IDisposable
    interface IChannelFactory
    interface ICommunicationObject
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 do cliente antes da criação do objeto de canal pela fábrica.

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

As fábricas de canais que implementam a IChannelFactory interface e seus canais associados geralmente são usadas pelos iniciadores de um padrão de comunicação. As fábricas de ouvintes que implementam a IChannelListener interface e seus ouvintes associados fornecem os mecanismos com os quais os canais são aceitos para comunicações.

Essa classe não faz parte do modelo de canal, mas do modelo de serviço. O CreateFactory método fornece os meios para criar um IChannelFactory ponto de extremidade de serviço. Use-o para construir um cliente que se conecte a um contrato de interface no serviço sem usar metadados ou política.

Observação

A configuração ChannelFactory.Credentials.Windows.AllowedImpersonationLevel para TokenImpersonationLevel.Anonymous sempre resulta em um logon anônimo, independentemente do nível de representação.

Observação especial para usuários C++ gerenciados derivados dessa classe:

  • Coloque seu código de limpeza em (Ativado)(Iniciar)Fechar (e/ou OnAbort), não em um destruidor.

  • Evite destruidores; eles fazem com que o compilador gere IDisposableautomaticamente .

  • Evite membros não referenciados; eles podem fazer com que o compilador gere IDisposableautomaticamente .

  • Evite usar um finalizador; mas se você incluir um, deverá suprimir o aviso de build e a chamada SuppressFinalize(Object) e o próprio finalizador de (On)(Begin)Close (e/ou OnAbort) para emular o que teria sido o comportamento gerado automaticamente IDisposable .

Ao adicionar comportamentos programaticamente, o comportamento é adicionado à propriedade apropriada Behaviors antes da ChannelFactory criação de qualquer canal. Consulte a seção de exemplo para obter um exemplo de código.

Construtores

ChannelFactory()

Inicializa uma nova instância da classe ChannelFactory.

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.

DefaultCloseTimeout

Obtém o intervalo de tempo padrão fornecido para a conclusão de uma operação close.

DefaultOpenTimeout

Obtém o intervalo de tempo padrão fornecido para a conclusão de uma operação open.

Endpoint

Obtém o ponto de extremidade de serviço ao qual os canais produzidos pela fábrica se conectam.

IsDisposed

Obtém um valor que indica se o objeto de comunicação foi descartado.

(Herdado de CommunicationObject)
State

Obtém um valor que indica o estado atual do objeto de comunicação.

(Herdado de CommunicationObject)
ThisLock

Obtém o bloqueio mutuamente exclusivo que protege a instância da classe durante uma transição de estado.

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

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

BeginClose(AsyncCallback, Object)

Inicia uma operação assíncrona para fechar um objeto de comunicação.

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

(Herdado de CommunicationObject)
BeginOpen(AsyncCallback, Object)

Inicia uma operação assíncrona para abrir um objeto de comunicação.

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

(Herdado de CommunicationObject)
Close()

Faz com que um objeto de comunicação faça a transição do estado atual para o estado fechado.

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

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

CreateFactory()

Cria a fábrica de canais para o ponto de extremidade atual da fábrica.

EndClose(IAsyncResult)

Conclui uma operação assíncrona para fechar um objeto de comunicação.

(Herdado de CommunicationObject)
EndOpen(IAsyncResult)

Conclui uma operação assíncrona para abrir um objeto de comunicação.

(Herdado de CommunicationObject)
EnsureOpened()

Abre a fábrica de canais atual se ela ainda não estiver aberta.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

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

(Herdado de CommunicationObject)
GetCommunicationObjectType()

Obtém o tipo de objeto de comunicação.

(Herdado de CommunicationObject)
GetHashCode()

Serve como a função de hash padrão.

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

GetType()

Obtém o Type da instância atual.

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

InitializeEndpoint(ServiceEndpoint)

Inicializa o ponto de extremidade de serviço da fábrica de canais com um ponto de extremidade especificado.

InitializeEndpoint(String, EndpointAddress)

Inicializa o ponto de extremidade de serviço da fábrica de canais com uma configuração e endereço especificados.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnAbort()

Finaliza a fábrica de canais interna da fábrica de canais atual.

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.

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.

OnClose(TimeSpan)

Chama close na fábrica de canais interna com um tempo limite especificado para a conclusão da operação.

OnClosed()

Chamada durante a transição de um objeto de comunicação para o estado de fechamento.

(Herdado de CommunicationObject)
OnClosing()

Chamada durante a transição de um objeto de comunicação para o estado de fechamento.

(Herdado de CommunicationObject)
OnEndClose(IAsyncResult)

Completa uma operação close assíncrona na fábrica de canais interna da fábrica de canais atual.

OnEndOpen(IAsyncResult)

Completa uma operação open assíncrona na fábrica de canais interna da fábrica de canais atual.

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.

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

OnOpened()

Inicializa uma cópia somente leitura do objeto ClientCredentials para a fábrica de canais.

OnOpening()

Cria a fábrica de canais interna da fábrica de canais atual.

Open()

Faz com que um objeto de comunicação faça a transição do estado criado para o estado aberto.

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

(Herdado de CommunicationObject)
ThrowIfDisposed()

Gera uma exceção se o objeto de comunicação é descartado.

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

(Herdado de CommunicationObject)
ThrowIfDisposedOrNotOpen()

Gera uma exceção se o objeto de comunicação não estiver no estado Opened.

(Herdado de CommunicationObject)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Eventos

Closed

Ocorre quando um objeto de comunicação entra no estado fechado.

(Herdado de CommunicationObject)
Closing

Ocorre quando um objeto de comunicação faz a transição para o estado fechado.

(Herdado de CommunicationObject)
Faulted

Ocorre quando um objeto de comunicação entra em um estado de falha.

(Herdado de CommunicationObject)
Opened

Ocorre quando um objeto de comunicação faz a transição para o estado aberto.

(Herdado de CommunicationObject)
Opening

Ocorre quando um objeto de comunicação faz a transição para o estado de abertura.

(Herdado de CommunicationObject)

Implantações explícitas de interface

IDisposable.Dispose()

Fecha a fábrica de canais atual.

Aplica-se a