Kötések és kötéselemek

A kötések speciális konfigurációs elemek, úgynevezett kötéselemek gyűjteményei, amelyeket a szolgáltatás futtatókörnyezete értékel ki, amikor egy ügyfél- vagy szolgáltatásvégpontot hoz létre. A kötések kötési elemeinek típusa és sorrendje határozza meg a protokoll és az átviteli csatornák kijelölési és halmozási sorrendjét a végpont csatornaveremében.

A kötések, különösen a rendszer által biztosított kötések általában számos konfigurációs tulajdonsággal rendelkeznek, amelyek a beágyazott kötéselemek leggyakrabban módosított tulajdonságait tükrözik.

A kötésnek pontosan egy átviteli kötési elemet kell tartalmaznia. Minden átviteli kötési elem egy alapértelmezett üzenetkódoló kötési elemet jelent, amelyet felül lehet bírálni, ha legfeljebb egy üzenetkódoló kötési elemet ad hozzá a kötéshez. Az átviteli és kódolókötési elemek mellett a kötés tartalmazhat tetszőleges számú protokollkötési elemet, amelyek együttesen implementálják a szolgáltatáshoz szükséges funkciókat, és egy SOAP-üzenetet küldenek az egyik végpontról a másikra. További információ: A szolgáltatások és ügyfelek konfigurálása kötések használatával.

Kötések és kötéselemek kiterjesztése

A Windows Communication Foundation (WCF) számos forgatókönyvet lefedő, rendszer által biztosított kötéseket tartalmaz. (További információ: System-Provided Kötések.) Előfordulhat azonban, hogy olyan kötést kell létrehoznia és használnia, amely nem szerepel a WCF-ben. Az alábbi forgatókönyvek új kötés létrehozását igénylik.

  • Új kötéselem (például új átviteli, kódolási vagy protokollkötési elem) használatához létre kell hoznia egy új kötést, amely tartalmazza ezt a kötési elemet. Ha például hozzáadott egy egyéni UdpTransportBindingElement UDP-átvitelt, létre kell hoznia egy új kötést annak használatához. A viselkedés típussal történő végrehajtásáról további információt az System.ServiceModel.Channels.CustomBindingEgyéni kötések című témakörben talál.

  • A meglévő kötéselemeket úgy konfigurálja, hogy a rendszer által biztosított kötések ne tárjanak fel információkat nyilvános tulajdonságokon keresztül. Létre kell hoznia például egy új kötést az aláírási és titkosítási műveletek végrehajtásának sorrendjének módosításához. A viselkedés végrehajtásával kapcsolatos további információkért lásd: System-Provided kötés testreszabása.

  • Olyan vállalati standard kötések létrehozása, amelyek csak bizonyos konfigurációs beállításokat fednek fel. Ha például szeretne létrehozni a vállalatának egy olyan változatot a WSHttpBinding-ből, amelyben a biztonság nem tiltható le, hozzon létre egy új kötést, amely úgy viselkedik, mint a WSHttpBinding, de a biztonság mindig bekapcsolva marad. További információ: User-Defined kötések létrehozása.

  • A metaadatok bizonyos testreszabásához általában, de nem feltétlenül kell egyéni kötési elemet konfigurálni vagy használni. További információ a metaadatok kötésekhez és kötéselemekhez való támogatásáról: Konfiguráció és metaadatok támogatása.

Csatornák, kötések és kötéselemek

A kötéseket és kötési elemeket arra használjuk, hogy összeköttetést létesítsünk az alkalmazásprogramozási modell, amely tartalmazza az attribútumokat és a működéseket, valamint a csatornamodell között, amely gyárakat és figyelőket, üzenetkódolókat, illetve szállítási protokollt és implementációt foglal magában. A kötéselemeket és kötéseket általában úgy implementálják, hogy lehetővé tegyék a csatornák használatát az alkalmazásréteg számára.

A csatornaréteg leküldi vagy fogadja az üzeneteket a szolgáltatási rétegbe és onnan, és az üzeneteket a végpontok között irányítja át. Az ügyfélen a csatornák rétege egymásra épülő csatornagyárakból áll, amelyek csatornákat hoznak létre egy hálózati végponton. Egy szolgáltatásban a csatornaréteg olyan csatornafigyelők halmaza, amelyek a hálózati végponton fogadott csatornákat fogadják el.

Két általános csatornatípus létezik: protokollcsatornák és átviteli csatornák. Az átviteli csatornák felelősek az üzenetek tényleges átviteléért az egyik hálózati végpontról a másikra. Az átviteli csatornáknak alapértelmezett üzenetkódolóval kell rendelkezniük, és képesnek kell lenniük egy üzenetkódoló kötéselemen keresztül biztosított alternatív üzenetkódoló használatára. Az üzenetkódoló feladata, hogy drótábrázolássá alakítsa System.ServiceModel.Channels.Message az üzeneteket, és fordítva. A protokollcsatornák felelősek a SOAP-szintű protokollok (például WS-Security vagy WS-ReliableMessaging) megvalósításáért.

A szállítási és protokollcsatornák elsődleges követelménye, hogy implementálják a szükséges csatornaillesztőket. A működő csatornaréteg létrehozásához szükséges, hogy kapcsolódó gyárak és figyelők legyenek, és így tovább. A WCF csatorna-implementációinak használatához az egyes csatornákhoz BindingElement kapcsolódó kötéselemeknek kell lenniük, és rendelkeznie kell egy kapcsolódó kötésbővítmény-elemmel a konfigurációs fájlokba való felvételhez, amely a forrásból BindingElementExtensionElementszármazik.

Ahogy korábban említettük, az üzenetkódolók, protokollok és átviteli csatornák implementációinak kötési elemei halmozhatók egy csatornaverem létrehozásához, és a kötés az a mechanizmus, amely sorba rendezi őket egy rendezett készletbe. A kötések és kötéselemek összekapcsolják az alkalmazásprogramozási modellt a csatornamodellel. A csatorna-implementációkat közvetlenül a kódból is használhatja, de hacsak a kódolók, átvitelek és protokollok nincsenek kötési elemekként implementálva, nem használhatók a szolgáltatásréteg-programozási modellből.

A csatornák és kötési elemeik fejlesztéséről további információt a Csatornaréteg kiterjesztése című témakörben talál.