Megosztás a következőn keresztül:


Megbízható munkamenetek áttekintése

A Windows Communication Foundation (WCF) SOAP megbízható üzenettovábbítás a SOAP-végpontok közötti végpontok közötti, végpontok közötti adatátvitelt biztosítja. Ez olyan hálózatokon történik, amelyek megbízhatatlanok az átviteli hibák és a SOAP üzenetszintű hibáinak leküzdésével. Különösen munkamenet-alapú, egyszeri és (opcionálisan) megrendelt kézbesítést biztosít a SOAP vagy a szállítási közvetítők között küldött üzenetekhez. A munkamenet-alapú kézbesítés lehetővé teszi az üzenetek csoportosítását egy munkamenetben az üzenetek opcionális sorrendjével.

Ez a témakör a megbízható munkameneteket, a használatuk módját és módját, valamint azok biztonságossá tételét ismerteti.

WCF megbízható munkamenetek

A WCF reliable sessions a SOAP reliable messaging implementációja a WS-ReliableMessaging protokoll által meghatározottak szerint.

A WCF SOAP megbízható üzenetkezelés végpontok közötti, végpontok közötti, végpontok közötti megbízható munkamenetet biztosít, függetlenül az üzenetkezelési végpontokat elválasztó közvetítők számától vagy típusától. Ide tartoznak a SOAP-t nem használó átviteli közvetítők (például HTTP-proxyk) vagy a SOAP-t használó közvetítők (például SOAP-alapú útválasztók vagy hidak), amelyek szükségesek ahhoz, hogy az üzenetek a végpontok között haladjanak. A megbízható munkamenet-csatorna támogatja az interaktív kommunikációt, így az ilyen csatorna által csatlakoztatott szolgáltatások egyidejűleg futnak, és alacsony késés mellett, azaz viszonylag rövid időn belül cserélik és dolgozzák fel az üzeneteket. Ez az összekapcsolás azt jelenti, hogy ezek az összetevők együtt haladnak előre vagy együtt meghiúsulnak, így nincs közöttük elkülönítés.

A megbízható munkamenetek kétféle hibát rejtenek el:

  • SOAP üzenetszintű hibák, amelyek magukban foglalják az elveszett vagy duplikált üzeneteket, valamint az elküldött sorrendtől eltérő sorrendben érkező üzeneteket.

  • Átviteli hibák.

A megbízható munkamenet implementálja a WS-ReliableMessaging protokollt és egy memórián belüli átviteli ablakot a SOAP üzenetszintű hibák maszkolásához, és újra létrehozza a kapcsolatokat átviteli hibák esetén.

A megbízható munkamenet olyan SOAP-üzeneteket biztosít, mint a TCP az IP-csomagokhoz. A TCP-szoftvercsatorna-kapcsolat az IP-csomagok egyedi, sorrendben történő átvitelét biztosítja a csomópontok között. A megbízható csatorna ugyanazt a típusú megbízható átvitelt biztosítja, de a TCP-szoftvercsatornák megbízhatóságától a következő módokon tér el:

  • A megbízhatóság a SOAP üzenet szintjén van, nem egy tetszőleges méretű bájtos csomag esetében.

  • A megbízhatóság transzportsemleges, nem csak a TCP-en keresztüli átvitelhez.

  • A megbízhatóság nincs egy adott átviteli munkamenethez kötve (például a TCP-kapcsolat által biztosított munkamenethez), és egyszerre vagy egymás után több átviteli munkamenetet is használhat a megbízható munkamenet élettartama során.

  • A megbízható munkamenet a küldő és a fogadó SOAP-végpontok között van, függetlenül attól, hogy hány átviteli kapcsolat szükséges a köztük lévő kapcsolathoz. Röviden: a TCP-megbízhatóság ott ér véget, ahol az átviteli kapcsolat véget ér, míg a megbízható munkamenetek a végpontok közötti megbízhatóságot biztosítják.

Megbízható munkamenetek és kötések

Ahogy korábban említettük, a megbízható munkamenet közlekedéssemleges. Emellett számos üzenetcsere-mintán, például a kérés-válasz vagy a kétoldalas kapcsolaton keresztül is létrehozhat egy megbízható munkamenetet. A WCF megbízható munkamenetek kötések halmazának tulajdonságaként vannak közzétéve.

Használjon megbízható munkamenetet az alábbi végpontokon:

  • HTTP-alapú átviteli szabványos kötések:

    • WsHttpBinding és közzéteheti a kérelem-válasz vagy az egyirányú szerződéseket.

    • Ha megbízható munkamenetet használ egy kérés-válasz vagy egyirányú egyszerű szolgáltatási szerződés alapján.

    • WsDualHttpBinding és tegye közzé a kétoldalas, a kérelem-válasz vagy az egyirányú szerződéseket.

    • WsFederationHttpBinding és közzéteheti a kérelem-válasz vagy az egyirányú szerződéseket.

  • TCP-alapú átviteli standard kötések:

    • NetTcpBinding és kétoldalas, válaszkérési vagy egyirányú szerződéseket tehet közzé.

Használjon megbízható munkamenetet bármely más kötésen egy egyéni kötés létrehozásával, például HTTPS-sel (a problémákról további információt a Reliable sessions and security című témakörben talál) vagy egy elnevezett csőkötést.

Egy megbízható munkamenetet különböző alapul szolgáló csatornatípusokon halmozhat fel, és az eredményként kapott megbízható munkamenetcsatorna-alakzatok eltérőek. Az ügyfélen és a kiszolgálón is a támogatott megbízható munkamenet-csatorna típusa a használt mögöttes csatorna típusától függ. Az alábbi táblázat az ügyfélen támogatott munkamenet-csatornák típusait sorolja fel az alapul szolgáló csatornatípus függvényeként.

Támogatott megbízható munkamenet-csatornatípusok† IRequestChannel IRequestSessionChannel IDuplexChannel IDuplexSessionChannel
IOutputSessionChannel Igen Igen Igen Igen
IRequestSessionChannel Igen Igen Nem Nem
IDuplexSessionChannel Nem Nem Igen Igen

†A támogatott csatornatípusok a metódusnak BuildChannelFactory<TChannel>(BindingContext) átadott általános TChannel paraméterértékhez elérhető értékek.

Az alábbi táblázat a kiszolgálón támogatott munkamenet-csatornák típusait sorolja fel a mögöttes csatornatípus függvényeként.

Támogatott megbízható munkamenet-csatornatípusok‡ IReplyChannel IReplySessionChannel IDuplexChannel IDuplexSessionChannel
IInputSessionChannel Igen Igen Igen Igen
IReplySessionChannel Igen Igen Nem Nem
IDuplexSessionChannel Nem Nem Igen Igen

‡A támogatott csatornatípusok a metódusnak BuildChannelListener<TChannel>(BindingContext) átadott általános TChannel paraméterértékhez elérhető értékek.

Megbízható munkamenetek és biztonság

A megbízható munkamenetek biztonságossá tétele azért fontos, hogy a kommunikáló felek (szolgáltatás és ügyfél) hitelesítve legyenek, és hogy a munkamenetben kicserélt üzenetek ne legyenek illetéktelenek. Emellett fontos biztosítani az egyes megbízható munkamenetek integritását. A megbízható munkameneteket úgy biztosítjuk, hogy egy biztonsági munkamenet csatornája által képviselt és felügyelt biztonsági környezethez köti. A biztonsági csatorna biztonsági munkamenetet biztosít. A munkamenet-létesítés során kicserélt biztonsági jogkivonatok ezután a megbízható munkamenet üzeneteinek védelmére szolgálnak.

Ha egy megbízható munkamenet TCP-S-en keresztül van, a TCP-munkamenet a megbízható munkamenethez van kötve. Ezért a szállítási biztonság biztosítja, hogy a biztonság a megbízható munkamenethez is kötődjön. Ebben az esetben a kapcsolat újralétrehozása ki van kapcsolva.

Az egyetlen kivétel a HTTPS használata. A Secure Sockets Layer (SSL) munkamenet nincs a megbízható munkamenethez kötve. Ez fenyegetést jelent, mert a biztonsági környezetet (az SSL-munkamenetet) használó munkamenetek nem védettek egymástól; ez az alkalmazástól függően lehet, hogy nem jelent valós fenyegetést.

Megbízható munkamenetek használata

A WCF megbízható munkamenetek használatához hozzon létre egy végpontot egy megbízható munkamenetet támogató kötéssel. Használja az egyik rendszer által biztosított kötést, amelyet a WCF biztosít az engedélyezett megbízható munkamenethez, vagy hozzon létre egy saját egyéni kötést, amely ezt teszi.

A megbízható munkameneteket alapértelmezés szerint támogató és engedélyező rendszer által definiált kötések a következők:

A rendszer által biztosított kötések, amelyek egy megbízható munkamenetet támogatnak lehetőségként, de alapértelmezés szerint nem engedélyezik az alábbiakat:

Az egyéni kötések létrehozásának módjáról a How to: Create a Custom Reliable Session Binding with HTTPS (Egyéni megbízható munkamenet-kötés létrehozása HTTPS-lel) című témakörben talál példát.

A megbízható munkameneteket támogató WCF-kötésekről a rendszer által biztosított kötések című témakörben olvashat.

Mikor érdemes megbízható munkameneteket használni?

Fontos tisztában lenni azzal, hogy mikor érdemes megbízható munkameneteket használni az alkalmazásban. A WCF támogatja az egyidejűleg aktív és élő végpontok közötti megbízható munkameneteket. Ha az alkalmazás megköveteli, hogy az egyik végpont egy ideig elérhetetlen legyen, akkor a megbízhatóság eléréséhez használjon üzenetsorokat.

Ha a forgatókönyv két végpontot igényel TCP-kapcsolaton keresztül, akkor a TCP elegendő lehet a megbízható üzenetcserék biztosításához. Bár nem szükséges megbízható munkamenetet használni, mivel a TCP biztosítja, hogy a csomagok sorrendben és csak egyszer érkezzenek meg.

Ha a forgatókönyv az alábbi jellemzők bármelyikével rendelkezik, komolyan fontolóra kell vennie egy megbízható munkamenet használatát.

  • SOAP-közvetítők, például SOAP-útválasztók

  • Proxyközvetítők vagy átviteli hidak

  • Időszakos kapcsolatmegszakadás

  • Munkamenetek HTTP-en keresztül

Lásd még