Nyelv

Binding Osztály

Definíció

Az ügyfelek és szolgáltatások közötti kommunikációhoz használt protokollokat, átviteleket és üzenetkódolókat meghatározó kötéselemeket tartalmazza.

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
Öröklődés
Binding
Származtatott
Megvalósítás

Példák

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

Megjegyzések

Kötéselemek gyűjteménye, amelyek mindegyike leírja, hogyan kommunikál egy végpont más végpontokkal, és amelyek következetesen, az ügyfél egy csatorna-előállítójába és a szolgáltatás csatornafigyelőibe épülnek. A kötések protokollcsatornáknak, átviteli csatornáknak és üzenetkódolóknak megfelelő kötéselemek gyűjteményét tartalmazzák. A protokollcsatornákhoz tetszőleges számú kötési elem lehet, de mindegyik átviteli és üzenetkódolóhoz csak egy kötéselem tartozik. A kötésekben általában hat kötési elemréteg található. Csak a verem alján lévő átviteli és kódolási kötési elemekre van szükség. Mivel minden kötéshez kódolásra van szükség, ha nincs megadva kódolás, Windows kommunikációs alaprendszer (WCF) hozzáad egy alapértelmezett kódolást. Az alapértelmezett szöveg/XML a HTTP- és HTTPS-átvitelekhez, a bináris pedig más átvitelekhez.

Az alábbi táblázat összefoglalja az egyes rétegek beállításait.

Réteg Beállítások Szükséges
Tranzakciós folyamat TransactionFlowBindingElement No
Reliability ReliableSessionBindingElement No
Biztonság Szimmetrikus, aszimmetrikus, Transport-Level No
Alakzat módosítása CompositeDuplexBindingElement No
Átviteli frissítések SSL-stream, Windows-stream, társfeloldó No
Encoding Szöveg, bináris, MTOM, egyéni Igen
Transport TCP, Named Pipes, HTTP, HTTPS, MSMQ, Egyedi Igen

Minden kötési elem megadja a csatorna-előállító létrehozásának specifikációját az ügyfélen és egy csatornafigyelőt a szolgáltatásban. A csatorna-előállító verem létrehozásakor például egy csatorna-előállító található a kötegben a kötés egyes kötési elemeihez. Ugyanez a leképezés vonatkozik a szolgáltatás veremében lévő csatornafigyelőkre is. Az ügyfél és a szolgáltatás konzisztenciája kritikus fontosságú a végpontok közötti csatornaalapú kapcsolat létrehozásához. Az egyes gyárak és figyelők viszont feldolgozhatják az őket összekötő csatornaverem megfelelő csatornáinak küldését és elfogadását, és ezek a csatornák ezután küldhetik és fogadhatják a kommunikációhoz használt üzeneteket.

A szolgáltatás minden példánya Binding rendelkezik egy-egy Name példánnyal, amely Namespace együttesen egyedileg azonosítja azt a szolgáltatás metaadataiban. Ha nincs megadva név vagy névtér, a WCF alapértelmezett értékeket ad hozzá Önnek. Az alapértelmezett név és null az alapértelmezett névtér.http://tempuri.org/ A kötés felhasználóneve eltér a tulajdonság által Scheme megadott protokollnév specifikációjától. Ha például további HTTP-kötéseket szeretne hozzáadni, nevezze el nekik a kívánt nevet, és állítsa az összes sémát "http" értékre. A rendszer nem tartalmazza az alkalmazás vagy a gép elküldését a Scheme. Így elkerülheti azt a gyakori problémát, hogy nem lehet további kezelőket regisztrálni a jól ismert protokollokhoz. A kötések több verziójával is egyszerűen dolgozhat egymás mellett, ha az egyes verziókat eltérő névvel adhatja meg.

Az Binding osztály implementálja az interfészt a IDefaultCommunicationTimeouts szolgáltatásmegtagadási (DOS-) támadások enyhítésére, amelyek az erőforrások hosszabb ideig történő be- és bekapcsolására támaszkodnak. A megvalósítás meghatározza a kapcsolatok megnyitásához és bezárásához, valamint az üzenetek fogadásához és küldéséhez kapcsolódó olvasási és írási műveletek kommunikációs időtúllépési értékeit. Az időtúllépések lekéréséhez és beállításához használt tulajdonságokat és az alapértelmezett értékműveleteket az alábbi táblázat foglalja össze.

Időtúllépés tulajdonság Alapértelmezett érték
OpenTimeout 1 perc
CloseTimeout 1 perc
SendTimeout 1 perc
ReceiveTimeout 10 perc

Ha egy kötést örökléssel Bindinghoz létre, felül kell bírálnia CreateBindingElements.

Emellett saját kötéselemeket is definiálhat, és beillesztheti őket az előző táblázat bármely definiált rétege közé. További információért lásd a CustomBinding osztályt.

Konstruktorok

Name Description
Binding()

Inicializálja az Binding osztály új példányát alapértelmezett névtérrel és névtérrel.

Binding(String, String)

Inicializálja az Binding osztály új példányát a szolgáltatás megadott kötéséből.

Tulajdonságok

Name Description
CloseTimeout

Lekéri vagy beállítja a kapcsolat lezárásához megadott időintervallumot, mielőtt az átvitel kivételt eredményezne.

MessageVersion

Lekéri a kötéssel konfigurált ügyfelek és szolgáltatások által használt üzenetverziót.

Name

Lekéri vagy beállítja a kötés nevét.

Namespace

Lekéri vagy beállítja a kötés XML-névterét.

OpenTimeout

Lekéri vagy beállítja a kapcsolat megnyitásához megadott időintervallumot, mielőtt az átvitel kivételt eredményezne.

ReceiveTimeout

Lekéri vagy beállítja a kapcsolat inaktív állapotának időtartamát, amely alatt nem érkeznek alkalmazásüzenetek, mielőtt megszakadna.

Scheme

Származtatott osztályban való implementáláskor beállítja az URI-sémát, amely a kötések által létrehozott csatorna- és figyelőgyárak által használt átvitelt határozza meg.

SendTimeout

Lekéri vagy beállítja az írási művelethez megadott időintervallumot, mielőtt az átvitel kivételt eredményezne.

Metódusok

Name Description
BuildChannelFactory<TChannel>(BindingParameterCollection)

A channel factory vermet azon az ügyfélen hozza létre, amely egy adott típusú csatornát hoz létre, és amely megfelel a kötési paraméterek gyűjteményében megadott funkcióknak.

BuildChannelFactory<TChannel>(Object[])

A channel factory vermet azon az ügyfélen hozza létre, amely egy adott típusú csatornát hoz létre, és amely megfelel az objektumtömb által megadott funkcióknak.

BuildChannelListener<TChannel>(BindingParameterCollection)

Létrehozza a csatornafigyelőt arra a szolgáltatásra, amely elfogad egy adott típusú csatornát, és amely megfelel a kötési paraméterek gyűjteményében megadott funkcióknak.

BuildChannelListener<TChannel>(Object[])

Létrehozza a csatornafigyelőt arra a szolgáltatásra, amely elfogadja a megadott típusú csatornát, és megfelel a megadott funkcióknak.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Létrehozza a csatornafigyelőt arra a szolgáltatásra, amely elfogadja a megadott típusú csatornát, és megfelel a megadott funkcióknak.

BuildChannelListener<TChannel>(Uri, Object[])

Létrehozza a csatornafigyelőt arra a szolgáltatásra, amely elfogadja a megadott típusú csatornát, és megfelel a megadott funkcióknak.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Létrehozza a csatornafigyelőt arra a szolgáltatásra, amely elfogadja a megadott típusú csatornát, és megfelel a megadott funkcióknak.

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

Létrehozza a csatornafigyelőt arra a szolgáltatásra, amely elfogadja a megadott típusú csatornát, és megfelel a megadott funkcióknak.

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

Létrehozza a csatornafigyelőt arra a szolgáltatásra, amely elfogadja a megadott típusú csatornát, és megfelel a megadott funkcióknak.

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

Létrehozza a csatornafigyelőt arra a szolgáltatásra, amely elfogadja a megadott típusú csatornát, és megfelel a megadott funkcióknak.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Olyan értéket ad vissza, amely jelzi, hogy az aktuális kötés képes-e csatorna-előállító vermet létrehozni az ügyfélen, amely megfelel a megadott kötési paraméterek gyűjteményének.

CanBuildChannelFactory<TChannel>(Object[])

Olyan értéket ad vissza, amely jelzi, hogy az aktuális kötés képes-e olyan csatorna-előállító vermet létrehozni az ügyfélen, amely megfelel az objektumtömb által meghatározott követelményeknek.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Olyan értéket ad vissza, amely jelzi, hogy az aktuális kötés képes-e csatornafigyelő vermet építeni a szolgáltatásra, amely megfelel a megadott kötési paraméterek gyűjteményének.

CanBuildChannelListener<TChannel>(Object[])

Olyan értéket ad vissza, amely jelzi, hogy az aktuális kötés képes-e olyan csatornafigyelő vermet létrehozni a szolgáltatásban, amely megfelel az objektumok tömbjében megadott feltételeknek.

CreateBindingElements()

Ha egy származtatott osztályban felül van bírálva, létrehoz egy gyűjteményt, amely az aktuális kötés részét képező kötési elemeket tartalmazza.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetProperty<T>(BindingParameterCollection)

A kötési verem megfelelő rétegéből kért beírt objektumot ad vissza, ha van ilyen.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ShouldSerializeName()

Azt adja vissza, hogy a kötés nevét szerializálni kell-e.

ShouldSerializeNamespace()

Azt adja vissza, hogy a kötés névterét szerializálni kell-e.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes: