ChannelFactory<TChannel> Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Uma fábrica que cria canais de diferentes tipos que são usados pelos clientes para enviar mensagens a endpoints de serviço configurados de várias formas.
generic <typename TChannel>
public ref class ChannelFactory : System::ServiceModel::ChannelFactory, System::ServiceModel::Channels::IChannelFactory<TChannel>
public class ChannelFactory<TChannel> : System.ServiceModel.ChannelFactory, System.ServiceModel.Channels.IChannelFactory<TChannel>
type ChannelFactory<'Channel> = class
inherit ChannelFactory
interface IChannelFactory<'Channel>
interface IChannelFactory
interface ICommunicationObject
type ChannelFactory<'Channel> = class
inherit ChannelFactory
interface IChannelFactory
interface ICommunicationObject
interface IChannelFactory<'Channel>
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)
Parâmetros de Tipo Genérico
- TChannel
O tipo de canal produzido pela fábrica de canais. Este tipo deve ser ou IOutputChannel ou IRequestChannel.
- Herança
- Derivado
- Implementações
Exemplos
O exemplo seguinte mostra como criar uma fábrica de canais e usá-la para criar e gerir canais.
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8000/ChannelApp");
ChannelFactory<IRequestChannel> factory =
new ChannelFactory<IRequestChannel>(binding, address);
IRequestChannel channel = factory.CreateChannel();
channel.Open();
Message request = Message.CreateMessage(MessageVersion.Soap11, "hello");
Message reply = channel.Request(request);
Console.Out.WriteLine(reply.Headers.Action);
reply.Close();
channel.Close();
factory.Close();
}
O exemplo de código seguinte 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
Observações
Esta classe genérica permite cenários mais avançados onde é necessário criar uma fábrica de canais que possa ser usada para criar mais do que um tipo de canal.
Ao adicionar comportamentos programaticamente, o comportamento é adicionado à propriedade apropriada Behaviors antes ChannelFactory da criação de qualquer canal. Veja a secção de exemplo para um exemplo de código.
Frequentemente, aplicações cliente ou chamadas (por exemplo, aplicações intermédias também são aplicações cliente) que usam este tipo também apresentam necessidades complexas de gestão de estado, bem como de desempenho. Para mais informações sobre estes cenários, consulte Middle-Tier Aplicações para Clientes.
Construtores
| Name | Description |
|---|---|
| ChannelFactory<TChannel>() |
Inicializa uma nova instância da ChannelFactory<TChannel> classe. |
| ChannelFactory<TChannel>(Binding, EndpointAddress) |
Inicializa uma nova instância da ChannelFactory<TChannel> classe com um endereço de binding e endpoint especificados. |
| ChannelFactory<TChannel>(Binding, String) |
Inicializa uma nova instância da ChannelFactory<TChannel> classe com um endereço de binding e remoto especificados. |
| ChannelFactory<TChannel>(Binding) |
Inicializa uma nova instância da ChannelFactory<TChannel> classe. |
| ChannelFactory<TChannel>(ServiceEndpoint) |
Inicializa uma nova instância da ChannelFactory<TChannel> classe que produz canais com um endpoint especificado. |
| ChannelFactory<TChannel>(String, EndpointAddress) |
Inicializa uma nova instância da ChannelFactory<TChannel> classe associada a um nome especificado para a configuração do endpoint e endereço remoto. |
| ChannelFactory<TChannel>(String) |
Inicializa uma nova instância da ChannelFactory<TChannel> classe com um nome de configuração de endpoint especificado. |
| ChannelFactory<TChannel>(Type) |
Inicializa uma nova instância da ChannelFactory<TChannel> classe. |
Propriedades
| Name | Description |
|---|---|
| Credentials |
Obtém as credenciais usadas pelos clientes para comunicar um endpoint de serviço através dos canais produzidos pela fábrica. (Herdado de ChannelFactory) |
| DefaultCloseTimeout |
Obtém o intervalo de tempo padrão fornecido para a conclusão de uma operação de fechamento. (Herdado de ChannelFactory) |
| DefaultOpenTimeout |
Obtém o intervalo de tempo padrão fornecido para a conclusão de uma operação aberta. (Herdado de ChannelFactory) |
| Endpoint |
Obtém o endpoint de serviço ao qual os canais produzidos pela fábrica se ligam. (Herdado de ChannelFactory) |
| IsDisposed |
Obtém um valor que indica se o objeto de comunicação foi eliminado. (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 de classe durante uma transição de estado. (Herdado de CommunicationObject) |
Métodos
| Name | Description |
|---|---|
| Abort() |
Faz com que um objeto de comunicação transite imediatamente do seu estado atual para o estado de fecho. (Herdado de CommunicationObject) |
| ApplyConfiguration(String) |
Inicializa a fábrica de canais com os comportamentos fornecidos por um ficheiro de configuração especificado e com os que estão no endpoint de serviço da fábrica de canais. (Herdado de ChannelFactory) |
| 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 timeout 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 seu estado atual para o estado fechado. (Herdado de CommunicationObject) |
| Close(TimeSpan) |
Faz com que um objeto de comunicação transite do seu estado atual para o estado fechado dentro de um intervalo de tempo especificado. (Herdado de CommunicationObject) |
| CreateChannel() |
Cria um canal de um tipo especificado para um endereço endpoint especificado. |
| CreateChannel(Binding, EndpointAddress, Uri) |
Cria um canal de um tipo especificado que é usado para enviar mensagens para um endpoint de serviço num endereço de transporte especificado, configurado com uma ligação especificada. |
| CreateChannel(Binding, EndpointAddress) |
Cria um canal de um tipo especificado que é usado para enviar mensagens para um endpoint de serviço configurado com uma ligação especificada. |
| CreateChannel(EndpointAddress, Uri) |
Cria um canal que é usado para enviar mensagens a um serviço num endereço de endpoint específico através de um endereço de transporte especificado. |
| CreateChannel(EndpointAddress) |
Cria um canal que é usado para enviar mensagens a um serviço num endereço endpoint específico. |
| CreateChannel(String) |
Cria um canal que é usado para enviar mensagens a um serviço cujo endpoint está configurado de uma forma especificada. |
| CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri) |
Cria um canal que é usado para enviar mensagens a um serviço com um atuar como token de segurança num endereço de endpoint específico através de um endereço de transporte especificado. |
| CreateChannelWithActAsToken(SecurityToken, EndpointAddress) |
Cria um canal que é usado para enviar mensagens a um serviço com um atuar como token de segurança num endereço endpoint específico. |
| CreateChannelWithActAsToken(SecurityToken) |
Cria um canal que é usado para enviar mensagens a um serviço com um ato como token de segurança. |
| CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri) |
Cria um canal que é usado para enviar mensagens a um serviço com um token de segurança emitido num endereço endpoint específico através de um endereço de transporte especificado. |
| CreateChannelWithIssuedToken(SecurityToken, EndpointAddress) |
Cria um canal que é usado para enviar mensagens a um serviço com um token de segurança emitido num endereço endpoint específico. |
| CreateChannelWithIssuedToken(SecurityToken) |
Cria um canal que é usado para enviar mensagens a um serviço com um token de segurança emitido. |
| CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri) |
Cria um canal que é usado para enviar mensagens a um serviço com um token em nome de um token de segurança num endereço endpoint específico através de um endereço de transporte especificado. |
| CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress) |
Cria um canal que é usado para enviar mensagens a um serviço com um token de segurança em nome de um endereço endpoint específico. |
| CreateChannelWithOnBehalfOfToken(SecurityToken) |
Cria um canal que é usado para enviar mensagens a um serviço com um token em nome de segurança. |
| CreateDescription() |
Cria uma descrição do endpoint do serviço. |
| CreateFactory() |
Constrói a fábrica de canais para o endpoint atual da fábrica. (Herdado de ChannelFactory) |
| EndClose(IAsyncResult) |
Completa uma operação assíncrona para fechar um objeto de comunicação. (Herdado de CommunicationObject) |
| EndOpen(IAsyncResult) |
Completa uma operação assíncrona para abrir um objeto de comunicação. (Herdado de CommunicationObject) |
| EnsureOpened() |
Abre a fábrica de canal atual se ainda não estiver aberta. (Herdado de ChannelFactory) |
| 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 seu estado atual para o estado defeituoso. (Herdado de CommunicationObject) |
| GetCommunicationObjectType() |
Obtém o tipo de objeto de comunicação. (Herdado de CommunicationObject) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetProperty<T>() |
Devolve o objeto tipado solicitado, se presente, da camada apropriada na pilha de canais, ou |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeEndpoint(Binding, EndpointAddress) |
Inicializa o endpoint de serviço da fábrica de canal com uma ligação e endereço especificados. (Herdado de ChannelFactory) |
| InitializeEndpoint(ServiceEndpoint) |
Inicializa o endpoint de serviço da fábrica de canal com um endpoint especificado. (Herdado de ChannelFactory) |
| InitializeEndpoint(String, EndpointAddress) |
Inicializa o endpoint de serviço da fábrica de canal com um endereço e configuração especificados. (Herdado de ChannelFactory) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnAbort() |
Termina a fábrica de canais interiores da fábrica de canais atual. (Herdado de ChannelFactory) |
| OnBeginClose(TimeSpan, AsyncCallback, Object) |
Inicia uma operação assíncrona de encerramento na fábrica de canais interior da fábrica de canais atual que tem um objeto de estado associado. (Herdado de ChannelFactory) |
| OnBeginOpen(TimeSpan, AsyncCallback, Object) |
Inicia uma operação aberta assíncrona na fábrica de canais interior da fábrica de canais atual que tem um objeto de estado associado. (Herdado de ChannelFactory) |
| OnClose(TimeSpan) |
As chamadas terminam na fábrica do canal interno com um tempo de espera especificado para a conclusão da operação. (Herdado de ChannelFactory) |
| OnClosed() |
Invocado durante a transição de um objeto de comunicação para o estado de fecho. (Herdado de CommunicationObject) |
| OnClosing() |
Invocado durante a transição de um objeto de comunicação para o estado de fecho. (Herdado de CommunicationObject) |
| OnEndClose(IAsyncResult) |
Completa uma operação assíncrona de fechamento na fábrica de canais interiores da fábrica de canais atual. (Herdado de ChannelFactory) |
| OnEndOpen(IAsyncResult) |
Completa uma operação aberta assíncrona na fábrica de canais interiores da fábrica de canais atual. (Herdado de ChannelFactory) |
| OnFaulted() |
Insere processamento num objeto de comunicação após esta transitar para o estado de falha devido à invocação de uma operação de falha síncrona. (Herdado de CommunicationObject) |
| OnOpen(TimeSpan) |
As chamadas abrem na fábrica de canais interiores da fábrica de canais atual com um tempo de espera especificado para a conclusão da operação. (Herdado de ChannelFactory) |
| OnOpened() |
Inicializa uma cópia somente de leitura do ClientCredentials objeto para a fábrica de canais. (Herdado de ChannelFactory) |
| OnOpening() |
Constrói a fábrica do canal interior para o canal atual. (Herdado de ChannelFactory) |
| 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 dentro de um intervalo de tempo especificado. (Herdado de CommunicationObject) |
| ThrowIfDisposed() |
Lança uma exceção se o objeto de comunicação for eliminado. (Herdado de CommunicationObject) |
| ThrowIfDisposedOrImmutable() |
Lança uma exceção se a propriedade do objeto State de comunicação não estiver definida para o Created estado. (Herdado de CommunicationObject) |
| ThrowIfDisposedOrNotOpen() |
Lança uma exceção se o objeto de comunicação não estiver nesse Opened estado. (Herdado de CommunicationObject) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
evento
| Name | Description |
|---|---|
| Closed |
Ocorre quando um objeto de comunicação transita para o estado fechado. (Herdado de CommunicationObject) |
| Closing |
Ocorre quando um objeto de comunicação transita para o estado de fecho. (Herdado de CommunicationObject) |
| Faulted |
Ocorre quando um objeto de comunicação transita para o estado falhado. (Herdado de CommunicationObject) |
| Opened |
Ocorre quando um objeto de comunicação transita para o estado aberto. (Herdado de CommunicationObject) |
| Opening |
Ocorre quando um objeto de comunicação transita para o estado de abertura. (Herdado de CommunicationObject) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IAsyncDisposable.DisposeAsync() |
Uma fábrica que cria canais de diferentes tipos que são usados pelos clientes para enviar mensagens a endpoints de serviço configurados de várias formas. (Herdado de ChannelFactory) |
| IDisposable.Dispose() |
Fecha a atual fábrica de canais. (Herdado de ChannelFactory) |
Aplica-se a
Segurança de Thread
Este tipo é seguro para fios.