CustomBinding Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define uma associação de uma lista de elementos de associação.
public ref class CustomBinding : System::ServiceModel::Channels::Binding
public class CustomBinding : System.ServiceModel.Channels.Binding
[System.Windows.Markup.ContentProperty("Elements")]
public class CustomBinding : System.ServiceModel.Channels.Binding
type CustomBinding = class
inherit Binding
[<System.Windows.Markup.ContentProperty("Elements")>]
type CustomBinding = class
inherit Binding
Public Class CustomBinding
Inherits Binding
- Herança
- Atributos
Exemplos
O exemplo a seguir mostra como criar um CustomBinding objeto usando um e um ReliableSessionBindingElementHttpTransportBindingElement
Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
// Create a custom binding that contains two binding elements.
ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement();
reliableSession.Ordered = true;
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
CustomBinding binding = new CustomBinding(reliableSession, httpTransport);
// Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
// Add a MEX endpoint.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8001/servicemodelsamples");
serviceHost.Description.Behaviors.Add(smb);
// Open the ServiceHostBase to create listeners and start listening for messages.
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
}
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
' Create a ServiceHost for the CalculatorService type and provide the base address.
Using serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
' Create a custom binding that contains two binding elements.
Dim reliableSession As New ReliableSessionBindingElement()
reliableSession.Ordered = True
Dim httpTransport As New HttpTransportBindingElement()
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
Dim binding As New CustomBinding(reliableSession, httpTransport)
' Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, "")
' Add a MEX endpoint.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.HttpGetUrl = New Uri("http://localhost:8001/servicemodelsamples")
serviceHost.Description.Behaviors.Add(smb)
' Open the ServiceHostBase to create listeners and start listening for messages.
serviceHost.Open()
' The service can now be accessed.
Console.WriteLine("The service is ready.")
Console.WriteLine("Press <ENTER> to terminate service.")
Console.WriteLine()
Console.ReadLine()
' Close the ServiceHostBase to shutdown the service.
serviceHost.Close()
End Using
Comentários
Use uma associação personalizada quando uma das associações fornecidas pelo sistema não atender aos requisitos do serviço. Uma associação personalizada pode ser usada, por exemplo, para habilitar o uso de um novo transporte ou de um novo codificador em um ponto de extremidade de serviço.
Uma associação personalizada é construída usando uma das CustomBinding de uma coleção de elementos de associação que são "empilhados" em uma ordem específica:
Na parte superior, há um TransactionFlowBindingElement opcional que permite transações de fluxo.
Em seguida, há um ReliableSessionBindingElement opcional que fornece um mecanismo de sessão e ordenação, conforme definido na especificação WS-ReliableMessaging. Essa noção de uma sessão pode cruzar intermediários de transporte e SOAP.
Em seguida, há um elemento de associação de segurança opcional que fornece recursos de segurança, como autorização, autenticação, proteção e confidencialidade. Os seguintes elementos de associação de segurança são fornecidos pelo WCF (Windows Communication Foundation):
Em seguida, estão os padrões de mensagem opcionais especificados por elementos de associação:
Estão temos os elementos de associação de upgrades/auxiliares de transporte opcionais:
Em seguida, há um elemento de associação de codificação de mensagem obrigatório. Você pode usar um transporte próprio ou usar uma das seguintes associações de codificação de mensagens:
Na parte inferior, há um elemento de transporte necessário. Você pode usar um transporte próprio ou usar um dos elementos de associação de transporte fornecidos pelo WCF (Windows Communication Foundation):
A tabela a seguir resume as opções para cada camada.
Camada | Opções | Obrigatório |
---|---|---|
Fluxo de transação | TransactionFlowBindingElement | Não |
Confiabilidade | ReliableSessionBindingElement | Não |
Segurança | Simétrico, assimétrico, nível de transporte | Não |
Alteração de forma | CompositeDuplexBindingElement | Não |
Atualizações de transporte | Fluxo SSL, fluxo do Windows, Resolvedor de Pares | Não |
Codificação | Texto, Binário, MTOM, Personalizado | Yes |
Transport | TCP, Pipes Nomeados, HTTP, HTTPS, variantes de MSMQ, Personalizado | Yes |
Além disso, você pode definir seus próprios elementos de associação e inseri-los entre qualquer uma das camadas definidas anteriormente.
Para obter uma discussão sobre como usar uma associação personalizada para modificar uma associação fornecida pelo sistema, confira Como personalizar uma associação fornecida pelo sistema.
Observação
Ao chamar um serviço WCF criado com .NET Framework 4.0 ou posterior de um aplicativo cliente WCF criado com .NET Framework 3.5 ou anterior, o arquivo de configuração gerado por svcutil.exe ou a adição de uma referência de serviço do Visual Studio conterá o atributo de validade na configuração de associação. Esse atributo não é reconhecido pelo runtime do .NET Framework 3.5 e o aplicativo gerará um ConfigurationErrorsException com a mensagem "Validade do atributo não reconhecido". Para solucionar esse problema, remova o atributo de validade da configuração de associação.
Construtores
CustomBinding() |
Inicializa uma nova instância da classe CustomBinding. |
CustomBinding(Binding) |
Inicializa uma nova instância da classe CustomBinding dos valores de uma associação especificada. |
CustomBinding(BindingElement[]) |
Inicializa a nova instância da classe CustomBinding de uma matriz de elementos de associação. |
CustomBinding(IEnumerable<BindingElement>) |
Inicializa uma nova instância da classe CustomBinding com os elementos de associação de uma pilha de canais completa. |
CustomBinding(String) |
Inicializa uma nova instância da classe CustomBinding. |
CustomBinding(String, String, BindingElement[]) |
Inicializa uma nova instância da classe CustomBinding de uma matriz de elementos de associação com um nome e namespace especificados. |
Propriedades
CloseTimeout |
Obtém ou define o intervalo concedido para que uma conexão seja fechada antes que o transporte gere uma exceção. (Herdado de Binding) |
Elements |
Obtém os elementos de associação da associação personalizada. |
MessageVersion |
Obtém a versão de mensagem usada por clientes e serviços configurados com a associação. (Herdado de Binding) |
Name |
Obtém ou define o nome da associação. (Herdado de Binding) |
Namespace |
Obtém ou define o namespace de XML da associação. (Herdado de Binding) |
OpenTimeout |
Obtém ou define o intervalo concedido para que uma conexão seja aberta antes que o transporte gere uma exceção. (Herdado de Binding) |
ReceiveTimeout |
Obtém ou define o intervalo de tempo que uma conexão pode permanecer inativa, durante o qual nenhuma mensagem de aplicativo é recebida, antes de seu descarte. (Herdado de Binding) |
Scheme |
Obtém o esquema de URI para transporte usado pela associação personalizada. |
SendTimeout |
Obtém ou define o intervalo concedido para uma operação ser concluída antes de o transporte gerar uma exceção. (Herdado de Binding) |
Métodos
BuildChannelFactory<TChannel>(BindingParameterCollection) |
Cria a pilha de fábricas de canais no cliente que cria um tipo de canal especificado e que satisfaz os recursos especificados por uma coleção de parâmetros de associação. (Herdado de Binding) |
BuildChannelFactory<TChannel>(Object[]) |
Cria a pilha de fábricas de canais no cliente que cria um tipo de canal especificado e que satisfaz os recursos especificados por uma matriz de objetos. (Herdado de Binding) |
BuildChannelListener<TChannel>(BindingParameterCollection) |
Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados por uma coleção de parâmetros de associação. (Herdado de Binding) |
BuildChannelListener<TChannel>(Object[]) |
Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados. (Herdado de Binding) |
BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados. (Herdado de Binding) |
BuildChannelListener<TChannel>(Uri, Object[]) |
Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados. (Herdado de Binding) |
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados. (Herdado de Binding) |
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados. (Herdado de Binding) |
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados. (Herdado de Binding) |
BuildChannelListener<TChannel>(Uri, String, Object[]) |
Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados. (Herdado de Binding) |
CanBuildChannelFactory<TChannel>(BindingParameterCollection) |
Retorna um valor que indica se a associação atual pode criar uma pilha de fábricas de canais no cliente que satisfaz a coleção de parâmetros de associação especificados. (Herdado de Binding) |
CanBuildChannelFactory<TChannel>(Object[]) |
Retorna um valor que indica se a associação atual pode criar uma pilha de fábricas de canais no cliente que satisfaz os requisitos especificados por uma matriz de objetos. (Herdado de Binding) |
CanBuildChannelListener<TChannel>(BindingParameterCollection) |
Retorna um valor que indica se a associação atual pode criar uma pilha de ouvintes de canais no serviço que satisfaça a coleção de parâmetros de associação especificados. (Herdado de Binding) |
CanBuildChannelListener<TChannel>(Object[]) |
Retorna um valor que indica se a associação atual pode criar uma pilha de ouvintes de canais no serviço que satisfaça os critérios especificados em uma matriz de objetos. (Herdado de Binding) |
CreateBindingElements() |
Retorna uma coleção genérica de elementos de associação da associação personalizada. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetProperty<T>(BindingParameterCollection) |
Retorna um objeto tipado solicitado, se presente, da camada apropriada na pilha de associação. (Herdado de Binding) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ShouldSerializeName() |
Retorna se o nome da associação deve ser serializado. (Herdado de Binding) |
ShouldSerializeNamespace() |
Retorna se o namespace da associação deve ser serializado. (Herdado de Binding) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |