Binding Klas

Definitie

Bevat de bindingselementen die de protocollen, transporten en berichtcoderingsprogramma's opgeven die worden gebruikt voor communicatie tussen clients en services.

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
Overname
Binding
Afgeleid
Implementeringen

Voorbeelden

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

Opmerkingen

Vertegenwoordigt een verzameling bindingselementen, die elk een aspect beschrijft van hoe een eindpunt communiceert met andere eindpunten en die consistent zijn gebouwd in een kanaalfactory op de client en in een kanaallistener op de service. Een binding bevat een verzameling bindingselementen die overeenkomen met protocolkanalen, transportkanalen en berichtcoderingsprogramma's. Er kan een willekeurig aantal bindingselementen zijn voor protocolkanalen, maar één en slechts één bindingselement voor elk transport- en berichtcoderingsprogramma. Er zijn meestal zes lagen bindingselementen in een binding. Alleen de bindingselementen voor transport en codering onder aan de stapel zijn vereist. Omdat voor elke binding een codering is vereist, voegt Windows Communication Foundation (WCF) een standaardcodering voor u toe als er geen codering is opgegeven. De standaardwaarde is Text/XML voor de HTTP- en HTTPS-transporten en Binary voor andere transporten.

De volgende tabel bevat een overzicht van de opties voor elke laag.

Laag Opties Required
Transactiestroom TransactionFlowBindingElement No
Reliability ReliableSessionBindingElement No
Beveiliging Symmetrisch, Asymmetrisch, Transport-Level No
Vorm wijzigen CompositeDuplexBindingElement No
Transportupgrades SSL-stream, Windows-stream, Peer Resolver No
Codering Tekst, Binair, MTOM, Aangepast Ja
Transport TCP, Named Pipes, HTTP, HTTPS, MSMQ, Aangepast Ja

Elk bindingselement biedt de specificatie voor het bouwen van een kanaalfactory op de client en een kanaallistener op de service. Wanneer de stack van de kanaalfactory is samengesteld, is er bijvoorbeeld één kanaalfactory in de stack voor elk bindingselement in de binding. Hetzelfde soort toewijzing is van toepassing op de kanaallisteners in de stack op de service. Consistentie op de client en service is essentieel voor het tot stand brengen van de op kanalen gebaseerde verbinding tussen deze eindpunten. Elke fabriek en listener verwerkt op zijn beurt het verzenden en accepteren van de bijbehorende kanalen in de kanaalstack die deze verbindt. Deze kanalen kunnen vervolgens de berichten verzenden en ontvangen die worden gebruikt om te communiceren.

Elke instantie van een Binding heeft een Name en Namespace die samen uniek identificeert in de metagegevens van de service. Als er geen naam of naamruimte is opgegeven, voegt WCF een standaardwaarde voor u toe. De standaardnaam is null en de standaardnaamruimte is http://tempuri.org/. Deze gebruikersnaam voor de binding verschilt van de specificatie van de protocolnaam, die wordt opgegeven door de Scheme eigenschap. Als u bijvoorbeeld meer HTTP-bindingen wilt toevoegen, kunt u ze een naam geven wat u wilt en al hun schema's instellen op http. Er is geen inherente toepassing of machine-verzending op basis van de Scheme. U voorkomt dus dat het veelvoorkomende probleem is dat u geen extra handlers kunt registreren voor bekende protocollen. U kunt ook eenvoudig met meerdere versies van een binding naast elkaar werken door elke versie een andere naam te geven.

De Binding klasse implementeert de IDefaultCommunicationTimeouts interface om DoS-aanvallen (Denial of Service) te beperken die afhankelijk zijn van het koppelen van resources voor langere tijdsintervallen. De implementatie geeft de time-outwaarden voor communicatie op voor het openen en sluiten van verbindingen en voor de lees- en schrijfbewerkingen die zijn gekoppeld aan het ontvangen en verzenden van berichten. De eigenschappen die worden gebruikt voor het ophalen en instellen van deze time-outs en de standaardwaardenbewerkingen, worden samengevat in de volgende tabel.

Time-outeigenschap Standaardwaarde
OpenTimeout 1 minuut
CloseTimeout 1 minuut
SendTimeout 1 minuut
ReceiveTimeout 10 minuten

Wanneer u een binding maakt door deze over te Bindingnemen, moet u deze overschrijven CreateBindingElements.

Daarnaast kunt u uw eigen bindingselementen definiëren en deze invoegen tussen een van de gedefinieerde lagen in de voorgaande tabel. Zie de CustomBinding klas voor meer informatie.

Constructors

Name Description
Binding()

Initialiseert een nieuw exemplaar van de Binding klasse met een standaardnaam en naamruimte.

Binding(String, String)

Initialiseert een nieuw exemplaar van de Binding klasse op basis van een opgegeven binding van de service.

Eigenschappen

Name Description
CloseTimeout

Hiermee haalt u het tijdsinterval op dat is opgegeven voor een verbinding die moet worden gesloten voordat het transport een uitzondering genereert.

MessageVersion

Hiermee haalt u de berichtversie op die wordt gebruikt door clients en services die zijn geconfigureerd met de binding.

Name

Hiermee haalt u de naam van de binding op of stelt u deze in.

Namespace

Hiermee haalt u de XML-naamruimte van de binding op of stelt u deze in.

OpenTimeout

Hiermee haalt u het tijdsinterval op dat is opgegeven voor een verbinding die moet worden geopend voordat het transport een uitzondering genereert.

ReceiveTimeout

Hiermee wordt het tijdsinterval opgehaald of ingesteld dat een verbinding inactief kan blijven, terwijl er geen toepassingsberichten worden ontvangen voordat deze wordt verwijderd.

Scheme

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, stelt u het URI-schema in dat het transport aangeeft dat wordt gebruikt door het kanaal en de listenerfactory's die door de bindingen zijn gebouwd.

SendTimeout

Hiermee haalt u het tijdsinterval op dat is opgegeven voor een schrijfbewerking die moet worden voltooid voordat het transport een uitzondering genereert.

Methoden

Name Description
BuildChannelFactory<TChannel>(BindingParameterCollection)

Bouwt de stack van de kanaalfactory op de client die een opgegeven type kanaal maakt en voldoet aan de functies die zijn opgegeven door een verzameling bindingsparameters.

BuildChannelFactory<TChannel>(Object[])

Bouwt de stack van de kanaalfactory op de client die een opgegeven type kanaal maakt en voldoet aan de functies die zijn opgegeven door een objectmatrix.

BuildChannelListener<TChannel>(BindingParameterCollection)

Bouwt de kanaallistener op de service die een opgegeven type kanaal accepteert en voldoet aan de functies die zijn opgegeven door een verzameling bindingsparameters.

BuildChannelListener<TChannel>(Object[])

Bouwt de kanaallistener op de service die een opgegeven type kanaal accepteert en voldoet aan de opgegeven functies.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Bouwt de kanaallistener op de service die een opgegeven type kanaal accepteert en voldoet aan de opgegeven functies.

BuildChannelListener<TChannel>(Uri, Object[])

Bouwt de kanaallistener op de service die een opgegeven type kanaal accepteert en voldoet aan de opgegeven functies.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Bouwt de kanaallistener op de service die een opgegeven type kanaal accepteert en voldoet aan de opgegeven functies.

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

Bouwt de kanaallistener op de service die een opgegeven type kanaal accepteert en voldoet aan de opgegeven functies.

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

Bouwt de kanaallistener op de service die een opgegeven type kanaal accepteert en voldoet aan de opgegeven functies.

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

Bouwt de kanaallistener op de service die een opgegeven type kanaal accepteert en voldoet aan de opgegeven functies.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Retourneert een waarde die aangeeft of de huidige binding een kanaalfactorystack kan bouwen op de client die voldoet aan de verzameling bindingsparameters die zijn opgegeven.

CanBuildChannelFactory<TChannel>(Object[])

Retourneert een waarde die aangeeft of de huidige binding een kanaalfactorystack kan bouwen op de client die voldoet aan de vereisten die zijn opgegeven door een objectmatrix.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Retourneert een waarde die aangeeft of de huidige binding een kanaallistenerstack kan bouwen op de service die voldoet aan de verzameling bindingsparameters die zijn opgegeven.

CanBuildChannelListener<TChannel>(Object[])

Retourneert een waarde die aangeeft of de huidige binding een kanaallistenerstack kan bouwen op de service die voldoet aan de criteria die zijn opgegeven in een matrix met objecten.

CreateBindingElements()

Wanneer deze worden overschreven in een afgeleide klasse, maakt u een verzameling die de bindingselementen bevat die deel uitmaken van de huidige binding.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetProperty<T>(BindingParameterCollection)

Retourneert een getypt object dat, indien aanwezig, is aangevraagd vanuit de juiste laag in de bindingsstack.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ShouldSerializeName()

Retourneert of de naam van de binding moet worden geserialiseerd.

ShouldSerializeNamespace()

Retourneert of de naamruimte van de binding moet worden geserialiseerd.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op