<netTcpBinding>

Especifica uma associação segura, confiável e otimizada adequada para comunicação entre computadores. Por padrão, ele gera uma pilha de comunicação de runtime com a Segurança do Windows para segurança e autenticação de mensagens, TCP para entrega de mensagens e codificação de mensagem binária.

<configuration>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>

Syntax

<netTcpBinding>
  <binding closeTimeout="TimeSpan"
           hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
           listenBacklog="Integer"
           maxBufferPoolSize="integer"
           maxBufferSize="Integer"
           maxConnections="Integer"
           maxReceivedMessageSize="Integer"
           name="string"
           openTimeout="TimeSpan"
           portSharingEnabled="Boolean"
           receiveTimeout="TimeSpan"
           sendTimeout="TimeSpan"
           transactionFlow="Boolean"
           transactionProtocol="OleTransactions/WSAtomicTransactionOctober2004"
           transferMode="Buffered/Streamed/StreamedRequest/StreamedResponse">
    <reliableSession ordered="Boolean"
                     inactivityTimeout="TimeSpan"
                     enabled="Boolean" />
    <security mode="None/Transport/Message/Both">
      <message clientCredentialType="None/Windows/UserName/Certificate/CardSpace"
               algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15" />
      <transport clientCredentialType="None/Windows/Certificate"
                 protectionLevel="None/Sign/EncryptAndSign" />
    </security>
    <readerQuotas maxArrayLength="Integer"
                  maxBytesPerRead="Integer"
                  maxDepth="Integer"
                  maxNameTableCharCount="Integer"
                  maxStringContentLength="Integer" />
  </binding>
</netTcpBinding>

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
closeTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de fechamento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
hostNameComparisonMode Especifica o modo de comparação de nome do host HTTP usado para analisar URIs. Esse atributo é do tipo HostNameComparisonMode, o que indica se o nome do host é usado para acessar o serviço ao fazer correspondência no URI. O valor padrão é StrongWildcard, o qual ignora o nome do host na correspondência.
listenBacklog Um inteiro positivo que especifica o número máximo de canais aguardando para serem aceitos no ouvinte. As conexões acima do limite serão colocadas na fila até que um espaço abaixo do limite fique disponível. O atributo connectionTimeout limita o tempo que o cliente aguardará para ser conectado antes de lançar uma exceção de conexão. O padrão é 10.
maxBufferPoolSize Um inteiro que especifica o tamanho máximo do pool de buffers para essa associação. O padrão é 512 * 1024 bytes. Muitas partes do WCF (Windows Communication Foundation) usam buffers. Criar e destruir buffers cada vez que eles são usados é caro, e a coleta de lixo para buffers também é cara. Com os pools de buffers, você pode pegar um buffer do pool, usá-lo e devolvê-lo ao pool assim que terminar. Portanto, a sobrecarga na criação e na destruição de buffers é evitada.
maxBufferSize Um inteiro positivo que especifica o tamanho máximo, em bytes, do buffer usado para armazenar mensagens na memória.

Se o atributo transferMode for igual a Buffered, esse atributo deverá ser igual ao valor do atributo maxReceivedMessageSize.

Se o atributo transferMode for igual a Streamed, esse atributo não poderá ser maior que o valor do atributo maxReceivedMessageSize, e deverá ter pelo menos o tamanho dos cabeçalhos.

O padrão é 65536. Para obter mais informações, consulte MaxBufferSize.
maxConnections Um inteiro que especifica o número máximo de conexões de saída e de entrada que o serviço criará/aceitará. As conexões de entrada e saída são contadas em relação a um limite separado especificado por esse atributo.

As conexões de entrada acima do limite serão colocadas na fila até que um espaço abaixo do limite fique disponível.

As conexões de saída acima do limite serão colocadas na fila até que um espaço abaixo do limite fique disponível.

O padrão é 10.
maxReceivedMessageSize Um inteiro positivo que especifica o tamanho máximo da mensagem, em bytes, incluindo cabeçalhos, que pode ser recebido em um canal configurado com essa associação. O remetente de uma mensagem que exceder esse limite receberá uma falha SOAP. O receptor remove a mensagem e cria uma entrada do evento no log de rastreamento. O padrão é 65536.
name Uma cadeia de caracteres que contém o nome de configuração da associação. Esse valor deve ser exclusivo, pois é usado como uma identificação para a associação. A partir do .NET Framework 4, associações e comportamentos não precisam ter um nome. Para obter mais informações sobre a configuração padrão e as associações sem nome, incluindo os comportamentos, confira Configuração Simplificada e Configuração Simplificada para Serviços WCF.
openTimeout Um valor TimeSpan que especifica o intervalo de tempo fornecido para a conclusão de uma operação de abertura. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
portSharingEnabled Um valor booliano que especifica se o compartilhamento de porta TCP está habilitado para essa conexão. Se for false, cada associação usará sua própria porta exclusiva. Essa configuração é relevante apenas para os serviços, pois os clientes não são afetados.
receiveTimeout Um valor TimeSpan que especifica o intervalo de tempo fornecido para a conclusão de uma operação de recebimento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:10:00.
sendTimeout Um valor TimeSpan que especifica o intervalo de tempo fornecido para a conclusão de uma operação de envio. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
transactionFlow Um valor booliano que especifica se a associação dá suporte ao fluxo de WS-Transactions. O padrão é false.
transactionProtocol Especifica o protocolo de transação a ser usado com essa associação. Os valores válidos são

- OleTransactions
– WSAtomicTransactionOctober2004

O padrão é OleTransactions. Esse atributo é do tipo TransactionProtocol.
transferMode Um valor TransferMode que especifica se as mensagens são armazenadas em buffer ou transmitidas por streaming ou uma solicitação ou resposta.

Elementos filho

Elemento Descrição
<security> Define as configurações de segurança da associação. Esse elemento é do tipo NetTcpSecurityElement.
<readerQuotas> Define as restrições sobre a complexidade das mensagens SOAP que podem ser processadas pelos pontos de extremidade configurados com essa associação. Esse elemento é do tipo XmlDictionaryReaderQuotasElement.
<reliableSession> Especifica se sessões as confiáveis são estabelecidas entre pontos de extremidade de canal.

Elementos pai

Elemento Descrição
<bindings> Esse elemento contém uma coleção de associações padrão e personalizadas.

Comentários

Essa associação gera uma pilha de comunicação em tempo de execução por padrão, que usa segurança de transporte, TCP para entrega de mensagens e uma codificação de mensagem binária. Essa associação é uma opção apropriada fornecida pelo sistema do WCF (Windows Communication Foundation) para se comunicar por meio de uma Intranet.

A configuração padrão para o netTcpBinding é mais rápida do que a configuração fornecida pelo wsHttpBinding, mas destina-se apenas à comunicação do WCF. O comportamento de segurança é configurável usando o atributo opcional securityMode. O uso de WS-ReliableMessaging é configurável usando o atributo opcional reliableSessionEnabled. Mas as mensagens confiáveis estão desativadas por padrão. De forma mais geral, as associações fornecidas pelo sistema HTTP, como wsHttpBinding e basicHttpBinding, são configuradas para ativar coisas por padrão, enquanto a associação netTcpBinding desativa coisas por padrão para que você precise aceitar para obter suporte, por exemplo, para uma das especificações do WS-*. Isso significa que a configuração padrão para TCP é mais rápida na troca de mensagens entre pontos de extremidade do que aquelas configuradas para as associações HTTP por padrão.

Exemplo

A associação é especificada nos arquivos de configuração para o cliente e o serviço. O tipo de associação é especificado no atributo binding do elemento <endpoint>. Se você quiser configurar a associação netTcpBinding e alterar algumas de suas configurações, será necessário definir uma configuração de associação. O ponto de extremidade precisa fazer referência à configuração de associação com um atributo bindingConfiguration. No exemplo a seguir, uma configuração de associação é definida.

<services>
  <service name="Microsoft.ServiceModel.Samples.CalculatorService"
           behaviorConfiguration="CalculatorServiceBehavior">
    ...
    <endpoint address=""
              binding="netTcpBinding"
              contract="Microsoft.ServiceModel.Samples.ICalculator" />
    ...
  </service>
</services>
<bindings>
  <netTcpBinding>
    <binding closeTimeout="00:01:00"
             openTimeout="00:01:00"
             receiveTimeout="00:10:00"
             sendTimeout="00:01:00"
             transactionFlow="false"
             transferMode="Buffered"
             transactionProtocol="OleTransactions"
             hostNameComparisonMode="StrongWildcard"
             listenBacklog="10"
             maxBufferPoolSize="524288"
             maxBufferSize="65536"
             maxConnections="10"
             maxReceivedMessageSize="65536">
      <readerQuotas maxDepth="32"
                    maxStringContentLength="8192"
                    maxArrayLength="16384"
                    maxBytesPerRead="4096"
                    maxNameTableCharCount="16384" />
      <reliableSession ordered="true"
                       inactivityTimeout="00:10:00"
                       enabled="false" />
      <security mode="Transport">
        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
      </security>
    </binding>
  </netTcpBinding>
</bindings>

Confira também