Binding Klass

Definition

Innehåller de bindningselement som anger protokoll, transporter och meddelandekodare som används för kommunikation mellan klienter och tjänster.

public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
    interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements IDefaultCommunicationTimeouts
Arv
Binding
Härledda
Implementeringar

Exempel

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // 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();
}

Kommentarer

Representerar en samling bindningselement som var och en beskriver en aspekt av hur en slutpunkt kommunicerar med andra slutpunkter och som skapas konsekvent i en kanalfabrik på klienten och i en kanallyssnare i tjänsten. En bindning innehåller en samling bindningselement som motsvarar protokollkanaler, transportkanaler och meddelandekodare. Det kan finnas valfritt antal bindningselement för protokollkanaler, men bara ett bindningselement för varje transport- och meddelandekodare. Det finns vanligtvis sex skikt med bindningselement i en bindning. Endast transport- och kodningsbindningselementen längst ned i stacken krävs. Eftersom en kodning krävs för varje bindning lägger Windows Communication Foundation (WCF) till en standardkodning åt dig om en kodning inte har angetts. Standardvärdet är Text/XML för HTTP- och HTTPS-transporterna och Binär för andra transporter.

I följande tabell sammanfattas alternativen för varje lager.

Skikt Options Obligatoriskt
Transaktionsflöde TransactionFlowBindingElement No
Reliability ReliableSessionBindingElement No
Security Symmetrisk, asymmetrisk, Transport-Level No
Figurändring CompositeDuplexBindingElement No
Transportuppgraderingar SSL-ström, Windows-ström, Peer Resolver No
Kodning Text, Binär, MTOM, Anpassad Yes
Transport TCP, Named Pipes, HTTP, HTTPS, MSMQ, Anpassad Yes

Varje bindningselement innehåller specifikationen för att skapa en kanalfabrik på klienten och en kanallyssnare i tjänsten. När kanalfabriksstacken är konstruerad finns det till exempel en kanalfabrik i stacken för varje bindningselement i bindningen. Samma typ av mappning gäller för kanallyssnare i stacken på tjänsten. Konsekvens på klienten och tjänsten är avgörande för att upprätta den kanalbaserade anslutningen mellan dessa slutpunkter. Varje fabrik och lyssnare bearbetar i sin tur sändning och godkännande av motsvarande kanaler i kanalstacken som ansluter dem, och dessa kanaler kan sedan skicka och ta emot de meddelanden som används för att kommunicera.

Varje instans av en Binding har en Name och Namespace som tillsammans unikt identifierar den i tjänstens metadata. Om inget namn eller namnområde har angetts lägger WCF till ett standardvärde åt dig. Standardnamnet är null och standardnamnområdet är http://tempuri.org/. Det här användarnamnet för bindningen skiljer sig från specifikationen för protokollnamnet, som anges av Scheme egenskapen. Om du till exempel vill lägga till fler HTTP-bindningar kan du ge dem namnet vad du vill och ställa in alla deras scheman på "http". Det finns inget inbyggt program eller datorutskick baserat på Scheme. Så du undviker det vanliga problemet med att det inte går att registrera ytterligare hanterare för välkända protokoll. Du kan också enkelt arbeta med flera versioner av en bindning sida vid sida genom att ge varje version ett annat namn.

Klassen Binding implementerar IDefaultCommunicationTimeouts gränssnittet för att minimera DoS-attacker (Denial of Service) som förlitar sig på att binda upp resurser under längre tidsperioder. Implementeringen anger tidsgränsvärdena för kommunikation för att öppna och stänga anslutningar och för läs- och skrivåtgärder som är associerade med att ta emot och skicka meddelanden. De egenskaper som används för att hämta och ange dessa tidsgränser och deras standardvärden sammanfattas i följande tabell.

Timeout-egenskap Standardvärdet
OpenTimeout 1 minut
CloseTimeout 1 minut
SendTimeout 1 minut
ReceiveTimeout 10 minuter

När du skapar en bindning genom att ärva från Bindingmåste du åsidosätta CreateBindingElements.

Dessutom kan du definiera egna bindningselement och infoga dem mellan något av de definierade lagren i föregående tabell. Mer information finns i CustomBinding klassen .

Konstruktorer

Name Description
Binding()

Initierar en ny instans av Binding klassen med ett standardnamn och namnområde.

Binding(String, String)

Initierar en ny instans av Binding klassen från en angiven bindning av tjänsten.

Egenskaper

Name Description
CloseTimeout

Hämtar eller anger tidsintervallet för en anslutning som ska stängas innan transporten skapar ett undantag.

MessageVersion

Hämtar meddelandeversionen som används av klienter och tjänster som konfigurerats med bindningen.

Name

Hämtar eller anger namnet på bindningen.

Namespace

Hämtar eller anger XML-namnområdet för bindningen.

OpenTimeout

Hämtar eller anger tidsintervallet för en anslutning som ska öppnas innan transporten skapar ett undantag.

ReceiveTimeout

Hämtar eller anger det tidsintervall som en anslutning kan förbli inaktiv under vilken inga programmeddelanden tas emot innan den tas bort.

Scheme

När det implementeras i en härledd klass anger du URI-schemat som anger den transport som används av kanalen och lyssnarfabrikerna som skapas av bindningarna.

SendTimeout

Hämtar eller anger tidsintervallet för en skrivåtgärd som ska slutföras innan transporten genererar ett undantag.

Metoder

Name Description
BuildChannelFactory<TChannel>(BindingParameterCollection)

Skapar kanalfabriksstacken på klienten som skapar en angiven typ av kanal och som uppfyller de funktioner som anges av en samling bindningsparametrar.

BuildChannelFactory<TChannel>(Object[])

Skapar kanalfabriksstacken på klienten som skapar en angiven typ av kanal och som uppfyller de funktioner som anges av en objektmatris.

BuildChannelListener<TChannel>(BindingParameterCollection)

Skapar kanallyssnaren på tjänsten som accepterar en angiven typ av kanal och som uppfyller de funktioner som anges av en samling bindningsparametrar.

BuildChannelListener<TChannel>(Object[])

Skapar kanallyssnaren på tjänsten som accepterar en angiven typ av kanal och som uppfyller de angivna funktionerna.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Skapar kanallyssnaren på tjänsten som accepterar en angiven typ av kanal och som uppfyller de angivna funktionerna.

BuildChannelListener<TChannel>(Uri, Object[])

Skapar kanallyssnaren på tjänsten som accepterar en angiven typ av kanal och som uppfyller de angivna funktionerna.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Skapar kanallyssnaren på tjänsten som accepterar en angiven typ av kanal och som uppfyller de angivna funktionerna.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Skapar kanallyssnaren på tjänsten som accepterar en angiven typ av kanal och som uppfyller de angivna funktionerna.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Skapar kanallyssnaren på tjänsten som accepterar en angiven typ av kanal och som uppfyller de angivna funktionerna.

BuildChannelListener<TChannel>(Uri, String, Object[])

Skapar kanallyssnaren på tjänsten som accepterar en angiven typ av kanal och som uppfyller de angivna funktionerna.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Returnerar ett värde som anger om den aktuella bindningen kan skapa en kanalfabriksstack på klienten som uppfyller samlingen med angivna bindningsparametrar.

CanBuildChannelFactory<TChannel>(Object[])

Returnerar ett värde som anger om den aktuella bindningen kan skapa en kanalfabriksstack på klienten som uppfyller de krav som anges av en objektmatris.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Returnerar ett värde som anger om den aktuella bindningen kan skapa en kanallyssningsstack på tjänsten som uppfyller den angivna samlingen med bindningsparametrar.

CanBuildChannelListener<TChannel>(Object[])

Returnerar ett värde som anger om den aktuella bindningen kan skapa en kanallyssningsstack på tjänsten som uppfyller de villkor som anges i en matris med objekt.

CreateBindingElements()

När den åsidosätts i en härledd klass skapar en samling som innehåller bindningselementen som ingår i den aktuella bindningen.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetProperty<T>(BindingParameterCollection)

Returnerar ett typat objekt som begärs, om det finns, från lämpligt lager i bindningsstacken.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ShouldSerializeName()

Returnerar om namnet på bindningen ska serialiseras.

ShouldSerializeNamespace()

Returnerar om bindningens namnområde ska serialiseras.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för