<Nettcpbinding>

Określa bezpieczne, niezawodne, zoptymalizowane powiązanie odpowiednie do komunikacji między maszynami. Domyślnie generuje stos komunikacji środowiska uruchomieniowego z Zabezpieczenia Windows na potrzeby zabezpieczeń i uwierzytelniania komunikatów, TCP na potrzeby dostarczania komunikatów i kodowania komunikatów binarnych.

<Konfiguracji>
  <System.servicemodel>
    <Powiązania>
      <Nettcpbinding>

Składnia

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

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut Opis
closeTimeout TimeSpan Wartość określająca interwał czasu określony dla zakończenia operacji zamknięcia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
hostNameComparisonMode Określa tryb porównania nazwy hosta HTTP używany do analizowania identyfikatorów URI. Ten atrybut jest typu HostNameComparisonMode, który wskazuje, czy nazwa hosta jest używana do dotarcia do usługi podczas dopasowywania identyfikatora URI. Wartość domyślna to StrongWildcard, która ignoruje nazwę hosta w dopasowaniu.
listenBacklog Dodatnia liczba całkowita określająca maksymalną liczbę kanałów oczekujących na zaakceptowanie na odbiorniku. Połączenia przekraczające ten limit są kolejkowane do momentu, aż miejsce poniżej limitu stanie się dostępne. Atrybut connectionTimeout ogranicza czas oczekiwania klienta na połączenie przed zgłoszeniem wyjątku połączenia. Wartość domyślna to 10.
maxBufferPoolSize Liczba całkowita określająca maksymalny rozmiar puli buforów dla tego powiązania. Wartość domyślna to 512 * 1024 bajty. Wiele części programu Windows Communication Foundation (WCF) używa buforów. Tworzenie i niszczenie buforów za każdym razem, gdy są używane, jest kosztowne, a odzyskiwanie pamięci dla buforów jest również kosztowne. W przypadku pul buforów można pobrać bufor z puli, użyć go i wrócić do puli po zakończeniu pracy. W związku z tym unika się nakładu pracy podczas tworzenia i niszczenia buforów.
maxBufferSize Dodatnia liczba całkowita określająca maksymalny rozmiar w bajtach buforu używanego do przechowywania komunikatów w pamięci.

transferMode Jeśli atrybut jest równy Buffered, ten atrybut powinien być równy wartości atrybutumaxReceivedMessageSize.

transferMode Jeśli atrybut jest równy Streamed, ten atrybut nie może być większy niż wartość atrybutu maxReceivedMessageSize i powinien być co najmniej rozmiar nagłówków.

Wartość domyślna to 65536. Aby uzyskać więcej informacji, zobacz MaxBufferSize.
maxConnections Liczba całkowita określająca maksymalną liczbę połączeń wychodzących i przychodzących, które usługa utworzy/zaakceptuje. Połączenia przychodzące i wychodzące są liczone względem oddzielnego limitu określonego przez ten atrybut.

Połączenia przychodzące przekraczające limit są kolejkowane do momentu, gdy miejsce poniżej limitu stanie się dostępne.

Połączenia wychodzące przekraczające limit są kolejkowane do momentu, gdy miejsce poniżej limitu stanie się dostępne.

Wartość domyślna to 10.
maxReceivedMessageSize Dodatnia liczba całkowita określająca maksymalny rozmiar komunikatu w bajtach, w tym nagłówki, które można odebrać w kanale skonfigurowanym za pomocą tego powiązania. Nadawca komunikatu przekraczającego ten limit otrzyma błąd PROTOKOŁU SOAP. Odbiorca pominie komunikat i tworzy wpis zdarzenia w dzienniku śledzenia. Wartość domyślna to 65536.
name Ciąg zawierający nazwę konfiguracji powiązania. Ta wartość powinna być unikatowa, ponieważ jest używana jako identyfikacja powiązania. Począwszy od .NET Framework 4, powiązania i zachowania nie muszą mieć nazwy. Aby uzyskać więcej informacji na temat domyślnej konfiguracji i bez nazw powiązań i zachowań, zobacz Uproszczone konfigurowanie i uproszczona konfiguracjadla usług WCF.
openTimeout TimeSpan Wartość określająca interwał czasu określony dla operacji otwierania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
portSharingEnabled Wartość logiczna określająca, czy udostępnianie portów TCP jest włączone dla tego połączenia. Jeśli jest falseto , każde powiązanie używa własnego portu wyłącznego. To ustawienie jest istotne tylko dla usług, ponieważ nie ma to wpływu na klientów.
receiveTimeout TimeSpan Wartość określająca interwał czasu określony dla wykonania operacji odbierania. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:10:00.
sendTimeout TimeSpan Wartość określająca interwał czasu określony dla operacji wysyłania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
transactionFlow Wartość logiczna określająca, czy powiązanie obsługuje przepływ transakcji WS-Transactions. Wartość domyślna to false.
transactionProtocol Określa protokół transakcji do użycia z tym powiązaniem. Prawidłowe wartości to

-Oletransactions
- WSAtomicTransactionOctober2004

Wartość domyślna to OleTransactions. Ten atrybut jest typu TransactionProtocol.
transferMode TransferMode Wartość określająca, czy komunikaty są buforowane, czy przesyłane strumieniowo, czy też żądanie lub odpowiedź.

Elementy podrzędne

Element Opis
<Zabezpieczeń> Definiuje ustawienia zabezpieczeń powiązania. Ten element jest typu NetTcpSecurityElement.
<Readerquotas> Definiuje ograniczenia dotyczące złożoności komunikatów PROTOKOŁU SOAP, które mogą być przetwarzane przez punkty końcowe skonfigurowane za pomocą tego powiązania. Ten element jest typu XmlDictionaryReaderQuotasElement.
<reliableSession> Określa, czy niezawodne sesje są ustanawiane między punktami końcowymi kanału.

Elementy nadrzędne

Element Opis
<Powiązania> Ten element zawiera kolekcję powiązań standardowych i niestandardowych.

Uwagi

To powiązanie domyślnie generuje stos komunikacji w czasie wykonywania, który używa zabezpieczeń transportu, PROTOKOŁU TCP do dostarczania komunikatów i kodowania komunikatów binarnych. To powiązanie jest odpowiednim wyborem systemowym programu Windows Communication Foundation (WCF) do komunikacji za pośrednictwem intranetu.

Domyślna konfiguracja dla elementu netTcpBinding jest szybsza niż konfiguracja podana przez usługę wsHttpBinding, ale jest przeznaczona tylko dla komunikacji WCF. Zachowanie zabezpieczeń można skonfigurować przy użyciu opcjonalnego securityMode atrybutu. Użycie WS-ReliableMessaging można skonfigurować przy użyciu atrybutu opcjonalnego reliableSessionEnabled . Jednak niezawodne komunikaty są domyślnie wyłączone. Ogólnie rzecz biorąc, powiązania dostarczane przez system HTTP, takie jak wsHttpBinding i basicHttpBinding są skonfigurowane domyślnie do włączania elementów, natomiast netTcpBinding powiązanie domyślnie wyłącza elementy, aby uzyskać pomoc techniczną, na przykład w przypadku jednej ze specyfikacji WS-*. Oznacza to, że domyślna konfiguracja protokołu TCP jest szybsza podczas wymiany komunikatów między punktami końcowymi niż te skonfigurowane domyślnie dla powiązań HTTP.

Przykład

Powiązanie jest określone w plikach konfiguracji klienta i usługi. Typ powiązania jest określony w atrybucie binding<endpoint> elementu. Jeśli chcesz skonfigurować powiązanie netTcpBinding i zmienić niektóre jego ustawienia, należy zdefiniować konfigurację powiązania. Punkt końcowy musi odwoływać się do konfiguracji powiązania z atrybutem bindingConfiguration . W poniższym przykładzie zdefiniowano konfigurację powiązania.

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

Zobacz też