Binding Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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) |