Partilhar via


<netNamedPipeBinding>

Define um enlace seguro, fiável e otimizado para comunicação entre processos no computador. Por predefinição, gera uma pilha de comunicação de runtime com WS-ReliableMessaging para fiabilidade, segurança de transporte para segurança de transferência, pipes nomeados para entrega de mensagens e codificação de mensagens binárias.

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

Sintaxe

<netNamedPipeBinding>
  <binding closeTimeout="TimeSpan"
           hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
           maxBufferPoolSize="Integer"
           maxBufferSize="Integer"
           maxConnections="Integer"
           maxReceivedMessageSize="Integer"
           name="String"
           openTimeout="TimeSpan"
           receiveTimeout="TimeSpan"
           sendTimeout="TimeSpan"
           transactionFlow="Boolean"
           transactionProtocol="OleTransactions/WS-AtomicTransactionOctober2004"
           transferMode="Buffered/Streamed/StreamedRequest/StreamedResponse">
    <security mode="None/Transport">
      <transport protectionLevel="None/Sign/EncryptAndSign" />
    </security>
    <readerQuotas maxArrayLength="Integer"
                  maxBytesPerRead="Integer"
                  maxDepth="Integer"
                  maxNameTableCharCount="Integer"
                  maxStringContentLength="Integer" />
  </binding>
</netNamedPipeBinding>

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.
maxBufferPoolSize Um número inteiro que especifica o tamanho máximo do conjunto de memória intermédia para este enlace. A predefinição é 524.288 bytes (512 * 1024). 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 a memória intermédia estiver cheia, os dados em excesso permanecerão no socket subjacente até que a memória intermédia tenha espaço novamente. Este valor não pode ser inferior ao maxReceivedMessageSize atributo . 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.
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
- WS-AtomicTransactionOctober2004

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

Elementos Principais

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

Observações

O NetNamedPipeBinding gera uma pilha de comunicação de tempo de execução por predefinição, que utiliza segurança de transporte, pipes nomeados 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 a comunicação no computador. Também suporta transações.

A configuração predefinida para o NetNamedPipeBinding é semelhante à configuração fornecida pelo NetTcpBinding, mas é mais simples porque a implementação do WCF destina-se apenas à utilização no computador e, consequentemente, existem menos funcionalidades expostas. A diferença mais notável é que a securityMode definição oferece apenas as None opções e Transport . O suporte de segurança SOAP não é uma opção incluída. O comportamento de segurança é configurável com o atributo opcional securityMode .

Exemplo

O exemplo seguinte demonstra o enlace netNamedPipeBinding, que fornece comunicação entre processos no mesmo computador. Os pipes nomeados não funcionam em computadores.

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 netNamedPipeBinding e alterar algumas das respetivas definições, tem de definir uma configuração de enlace. O ponto final tem de referenciar a configuração de enlace por nome com um bindingConfiguration atributo. Neste exemplo, a configuração de enlace chama-se Enlace1.

<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService"
               behaviorConfiguration="CalculatorServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/ServiceModelSamples/service" />
          </baseAddresses>
        </host>
        <!-- this endpoint is exposed at the base address provided by host: net.pipe://localhost/ServiceModelSamples/service  -->
        <endpoint address="net.pipe://localhost/ServiceModelSamples/service"
                  binding="netNamedPipeBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- the mex endpoint is exposed at http://localhost:8000/ServiceModelSamples/service/mex -->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <netNamedPipeBinding>
        <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"
                 maxBufferPoolSize="524288"
                 maxBufferSize="65536"
                 maxConnections="10"
                 maxReceivedMessageSize="65536">
          <security mode="Transport">
            <transport protectionLevel="EncryptAndSign" />
          </security>
        </binding>
      </netNamedPipeBinding>
    </bindings>
    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata httpGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Ver também