Partilhar via


<netTcpBinding>

Especifica um enlace seguro, fiável e otimizado adequado para comunicação entre máquinas. Por predefinição, gera uma pilha de comunicação de runtime com Segurança do Windows para segurança e autenticação de mensagens, TCP para entrega de mensagens e codificação de mensagens binárias.

<configuração>
  <system.serviceModel>
    <enlaces>
      <netTcpBinding>

Sintaxe

<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 secções seguintes descrevem atributos, elementos subordinados e elementos principais.

Atributos

Atributo Descrição
closeTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de fecho. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
hostNameComparisonMode Especifica o modo de comparação de nomes de anfitrião HTTP utilizado para analisar URIs. Este atributo é do tipo HostNameComparisonMode, que indica se o nome do anfitrião é utilizado para aceder ao serviço quando corresponde ao URI. O valor predefinido é StrongWildcard, que ignora o nome do anfitrião na correspondência.
listenBacklog Um número inteiro positivo que especifica o número máximo de canais à espera de serem aceites no serviço de escuta. As ligações que ultrapassem este limite são em fila de espera até que o espaço abaixo do limite fique disponível. O connectionTimeout atributo limita o tempo que um cliente aguardará para ser ligado antes de lançar uma exceção de ligação. A predefinição é 10.
maxBufferPoolSize Um número inteiro que especifica o tamanho máximo do conjunto de memória intermédia para este enlace. A predefinição é 512 * 1024 bytes. Muitas partes do Windows Communication Foundation (WCF) utilizam memórias intermédias. A criação e destruição de memórias intermédias sempre que são utilizadas é dispendiosa e a libertação da memória intermédia também é dispendiosa. Com os conjuntos de memória intermédia, pode tirar uma memória intermédia do conjunto, utilizá-la e devolvê-la ao conjunto assim que terminar. Assim, evita-se a sobrecarga na criação e destruição de memórias intermédias.
maxBufferSize Um número inteiro positivo que especifica o tamanho máximo, em bytes, da memória intermédia utilizada para armazenar mensagens na memória.

Se o transferMode atributo for igual a Buffered, este atributo deve ser igual ao valor do maxReceivedMessageSize atributo.

Se o transferMode atributo for igual a Streamed, este atributo não pode ser superior ao valor do maxReceivedMessageSize atributo e deve ter, pelo menos, o tamanho dos cabeçalhos.

A predefinição é 65536. Para obter mais informações, consulte MaxBufferSize.
maxConnections Um número inteiro que especifica o número máximo de ligações de saída e de entrada que o serviço irá criar/aceitar. As ligações de entrada e saída são contabilizadas com base num limite separado especificado por este atributo.

As ligações de entrada que excedam o limite são em fila de espera até ficar disponível um espaço abaixo do limite.

As ligações de saída que excedam o limite são em fila de espera até que um espaço abaixo do limite fique disponível.

A predefinição é 10.
maxReceivedMessageSize Um número inteiro positivo que especifica o tamanho máximo da mensagem, em bytes, incluindo cabeçalhos, que pode ser recebido num canal configurado com este enlace. O remetente de uma mensagem que excede este limite receberá uma falha SOAP. O recetor remove a mensagem e cria uma entrada do evento no registo de rastreio. A predefinição é 65536.
name Uma cadeia que contém o nome de configuração do enlace. Este valor deve ser exclusivo porque é utilizado como uma identificação para o enlace. A partir do .NET Framework 4, os enlaces e comportamentos não têm de ter um nome. Para obter mais informações sobre a configuração predefinida e os enlaces e comportamentos sem nome, veja Configuração Simplificada e Configuração Simplificada para os Serviços WCF.
openTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação aberta. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
portSharingEnabled Um valor booleano que especifica se a partilha de portas TCP está ativada para esta ligação. Se for false, cada enlace utiliza a sua própria porta exclusiva. Esta definição é relevante apenas para os serviços, porque os clientes não são afetados.
receiveTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de receção. Este valor deve ser maior ou igual a Zero. A predefinição é 00:10:00.
sendTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de envio. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
transactionFlow Um valor booleano que especifica se o enlace suporta WS-Transactions em fluxo. A predefinição é false.
transactionProtocol Especifica o protocolo de transação a utilizar com este enlace. Os valores válidos são

- OleTransactions
- WSAtomicTransactionOctober2004

A predefinição é OleTransactions. Este atributo é do tipo TransactionProtocol.
transferMode Um TransferMode valor que especifica se as mensagens são transmitidas em memória intermédia ou transmitidas em fluxo ou um pedido ou resposta.

Elementos subordinados

Elemento Descrição
<segurança> Define as definições de segurança do enlace. Este elemento é do tipo NetTcpSecurityElement.
<readerQuotas> Define as restrições sobre a complexidade das mensagens SOAP que podem ser processadas por pontos finais configurados com este enlace. Este elemento é do tipo XmlDictionaryReaderQuotasElement.
<reliableSession> Especifica se são estabelecidas sessões fiáveis entre pontos finais de canal.

Elementos principais

Elemento Descrição
<enlaces> Este elemento contém uma coleção de enlaces padrão e personalizados.

Observações

Este enlace gera uma pilha de comunicação de tempo de execução por predefinição, que utiliza segurança de transporte, TCP para entrega de mensagens e uma codificação de mensagens binárias. Este enlace é uma opção adequada fornecida pelo sistema do Windows Communication Foundation (WCF) para comunicar através de uma Intranet.

A configuração predefinida para o netTcpBinding é mais rápida do que a configuração fornecida pelo wsHttpBinding, mas destina-se apenas à comunicação wcf. O comportamento de segurança é configurável com o atributo opcional securityMode . A utilização de WS-ReliableMessaging é configurável com o atributo opcional reliableSessionEnabled . Mas as mensagens fiáveis estão desativadas por predefinição. De uma forma mais geral, os enlaces fornecidos pelo sistema HTTP, como wsHttpBinding e basicHttpBinding estão configurados para ativar itens por predefinição, ao passo que o netTcpBinding enlace desativa por predefinição para que tenha de optar ativamente por receber suporte, por exemplo, para uma das especificações WS-*. Isto significa que a configuração predefinida para TCP é mais rápida na troca de mensagens entre pontos finais do que as configuradas para os enlaces HTTP por predefinição.

Exemplo

O enlace é especificado nos ficheiros de configuração do cliente e do serviço. O tipo de enlace é especificado no binding atributo do <endpoint> elemento . Se quiser configurar o enlace netTcpBinding e alterar algumas das respetivas definições, é necessário definir uma configuração de enlace. O ponto final tem de referenciar a configuração de enlace com um bindingConfiguration atributo. No exemplo seguinte, é definida uma configuração de enlace.

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

Ver também