Tranzakciók kezelése a WCF- ben. Bevezetés A tranzakció egy olyan logikai egység, amely több elemi lépést úgy fog össze, hogy azok vagy mind sikeresen.

Slides:



Advertisements
Hasonló előadás
Oktatásszervezési változások. Mintatantervi változások.
Advertisements

A hálózat működése 1. A DHCP és az APIPA
Windows Communication Foundation (WCF)
RESTful Web Service tesztelése
Hálózati és Internet ismeretek
2010/2011 ősz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál  Részei.
Microsoft ® Lync ™ 2010 Válaszcsoportok használata – oktatás.
A normalizálás az adatbázis-tervezés egyik módszere
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Készítette: Bátori Béla 12.k
C++ programozási nyelv Gyakorlat hét
1. Előadás WCF- bemutatás
OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
Webszolgáltatások PHP-ben
Az integrált áramkörök (IC-k) tervezése
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
Többfelhasználós és internetes térkép kezelés, megjelenítés.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
13.a CAD-CAM informatikus
OSI Modell.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Programozás II. 3. Gyakorlat C++ alapok.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
WSDL alapismeretek A WSDL (Web Services Description Language – Web szolgáltatások leíró nyelv) egy XML-alapú nyelv a Web szolgáltatások leírására és azok.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Bevezetés az ebXML-be Forrás: An Introduction to ebXML ebXML and Web Services Practical Considerations In Implementing Web Services Romin IraniRomin Irani.
SOAP alapismeretek A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül. Forrás:
Hálózati és Internet ismeretek
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Objektumok. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum adatok (attribútumok) és metódusok (operációk,műveletek) összessége,
Hálózati architektúrák
Tóth Gergely, február BME-MIT Miniszimpózium, Általános célú biztonságos anonimitási architektúra Tóth Gergely Konzulensek: Hornák Zoltán.
LOGO Webszolgáltatások Készítette: Kovács Zoltán IV. PTM.
Hálózat kiépítésével lehetőségünk nyílik más számítógépek erőforrásainak használatára. Osztott háttértár használat: egy számítógép merevlemezének megosztásával.
Számítógép-hálózatok
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
VÉGES AUTOMATA ALAPÚ TERVEZÉSI MODELL
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
Java web programozás 11..
Hálózat menedzsment Óravázlat Készítette: Toldi Miklós.
Óravázlat Készítette: Toldi Miklós
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Programozás III KIVÉTEL.
Illés Zoltán ELTE Informatikai Kar
Kapcsolatok ellenőrzése
Gyurkó György. Az állapotmodellezés célja Általánosságban ugyanaz, mint a többi dinamikus modellezési technikáé: Jobban megismerni a problémát. Finomítani.
UML modellezés 3. előadás
Számítógép hálózatok.
Java web programozás 7-8..
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
13 – as Tétel! Vállalatánál adatbiztonsági okokból biztonsági mentések alkalmazását veszik fontolóra. Az Ön feladata, hogy a döntéshozók számára ismertesse.
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
ADATBÁZIS- RENDSZEREK 12. rész: Konkurenciavezérlés.
.NET FRAMEWORK Röviden Krizsán Zoltán 1.0. Tulajdonságok I Rövidebb fejlesztés 20 támogatott nyelv (nyílt specifikáció) 20 támogatott nyelv (nyílt specifikáció)
Hálózati eszközök. Router Az első routert egy William Yeager nevű kutató alkotta meg a 1980 januárjában Stanford Egyetemen.A feladata a számítógéptudomány.
Hálózatos programok készítése
A HTML alapjai Az internet és a web.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hálózati struktúrák, jogosultságok
Előadás másolata:

Tranzakciók kezelése a WCF- ben

Bevezetés A tranzakció egy olyan logikai egység, amely több elemi lépést úgy fog össze, hogy azok vagy mind sikeresen lezajlanak, vagy mind elbuknak. Pl.: banki átutalás két lépése: –pénz leemelése a forrásszámláról –pénz jóváírása a célszámlára Ha nem egyszerre sikeresek, valaki rosszul jár.

Bevezetés Ha a tranzakcióban szereplő összes utasítás sikeresen lezajlik → commit Ha legalább az egyik nem sikeres → rollback Rollback esetén a már lezajlott műveletek inverz párját kell elvégezni, hogy minden a kezdeti állapotba állhasson vissza

Bevezetés Ilyen logikát megvalósító algoritmus (bármilyen problémára) hagyományos módon is készíthető Azonban a programozók megsegítésére ez az eszköz be van építve a WCF keretrendszerbe

Áttekintés Az alábbi tulajdonságokkal rendelkeznek: –Atomiság –Konzisztencia őrzés –Izoláció –Tartósság

Áttekintés atomiság Az atomiság arra vonatkozik, hogy a műveletcsoportot kell egy bonthatatlan egységnek tekinteni. A szabály szerint vagy minden részművelet sikeresen lezajlik és a hatásuk végleges, vagy mindegyikük elbukik és a rollback végrehajtódik.

Áttekintés konzisztencia őrzés Ez a feltétel garantálja, hogy a tranzakció lezajlása után konzisztens állapotból konzisztens állapotba kerüljön a rendszer. Ha pl. egy bank egyik számlájáról egy másikra emelünk át pénzt, akkor az átutalás után a banknak ugyanannyi pénze kell, hogy maradjon.

Áttekintés izoláció Megakadályozza, hogy egy félkész (komittálatlan) tranzakció által ideiglenesen létrehozott inkonzisztens állapotot egy másik tranzakció megfigyelhesse. Továbbá meggátolja, hogy két folyamatban lévő tranzakció egymásra hatást gyakoroljon.

Áttekintés tartósság Egy kommittált tranzakció hatása: –vissza nem vonható –esetleges meghibásodásoktól a lehetőségekhez mérten védett

Áttekintés A WCF támogatja a WS-Atomic Transaction (WS-AT) protokollt, amely lehetővé teszi a tranzakciók áramoltatását együttműködő programok között Létezik támogatás az OLE Transactions protokollhoz is (az OLE Transactions a Microsoft interface szabványa a tranzakciók kezeléséhez.)

Áttekintés Konfigurációs fájlban állítható be, hogy: –igényeljük-e tranzakciókat, –milyen típusút használnánk, –külön-külön time-out értékeket állíthatunk be minden szolgáltatási szinthez

Áttekintés A tranzakciók attribútumai a System. ServiceModel névtérben a következő lehetőségeket nyújtja:System. ServiceModel –time-out-ok és izolációs szintek beállítása a ServiceBehaviorAttribute attribútummal, ServiceBehaviorAttribute –tranzakciók funkcionalitásának és viselkedésének beállítása a OperationBehaviorAttribute attribútummal,OperationBehaviorAttribute –a ServiceContractAttribute és az OperationContract- Attribute segítségével a Contract-ot megvalósító metódusban igényelhetjük; engedélyezhetjük; vagy megtagadhatjuk a tranzakciók áramoltatásátServiceContractAttributeOperationContract- Attribute

Tranzakció-modellek Három fajta modell: –Windows Communication Foundation Transactions (WCFT) –System.Transactions Transactions (STT) –MSDTC Transactions (MSDTC)

Tranzakció-modellek WCFT Tranzakcióval támogatott szolgáltatások írását teszi lehetővé WS-AtomicTransaction (WS-AT) támogatás Egy program, amely WCFT-t használ, kommunikálhat másik WCF szolgáltatással, vagy akár third-party technológiákkal

Tranzakció-modellek WCFT Egy WCF szolgáltatást megvalósító programban a WCFT segítségével definiálható, hogy pontosan hogyan, és mikor jöjjön létre a tranzakció-struktúra, továbbá képes azokat végrehajtani illetve szinkronizálni

Tranzakció-modellek STT A System.Transactions névtér két modellt ötvöz:System.Transactions –egy explicit programmodellt a Transaction osztály támogatásával, illetveTransaction –implicit lehetőségeket nyújt a TransactionScope osztály, amellyel az elkészített struktúrát könnyen tranzakcióként lehet kezelni TransactionScope

Tranzakció-modellek STT A System.Transactions egy WCF szolgáltatásban olyan programmodell létrehozását támogatja, mellyel egy tranzakciót a kliensben hozhatjuk létreSystem.Transactions Ez a tranzakció külön kérés nélkül, explicit módon intézhet kéréseket a szolgáltatást megvalósító programtól (ha szükséges)

Tranzakció-modellek MSDTC Az MSDTC egy tranzakció manager, amely elosztott tranzakciók kezeléséhez nyújt segítséget. Támogatást ad mind a szolgáltató, mind a kliens oldalán a létrehozott tranzakciók kezeléséhez.

Tranzakció attribútumok Három standard System.ServiceModel attribútum a tranzakciók konfigurálására:System.ServiceModel –TransactionFlowAttributeTransactionFlowAttribute –ServiceBehaviorAttributeServiceBehaviorAttribute –OperationBehaviorAttributeOperationBehaviorAttribute

TransactionFlowAttribute Egy eljárás klienstől érkező, bejövő tranzakció-fogadási hajlandóságát definiálja Az attribútum a kontrollt a TransactionFlowOption tulajdonság értékének beállításával valósítja meg. A felvehető értékek: Mandatory, Allowed, vagy NotAllowed TransactionFlowOption

TransactionFlowAttribute Ez az egyetlen attribútum ami a kiszolgálói műveleteket hozzárendeli a külső klienssel történő érintkezésekhez. A következő részben ismertetett tulajdonságok a művelet végrehajtása közbeni tranzakciók alkalmazásához kapcsolódnak.

ServiceBehaviorAttribute Definiálja a külső futtatás viselkedését a service contract-ben Az alábbi speciális paraméterei vannak: –TransactionAutoCompleteOnSessionCloseTransactionAutoCompleteOnSessionClose –ReleaseServiceInstanceOnTransactionCompleteReleaseServiceInstanceOnTransactionComplete –TransactionIsolationLevelTransactionIsolationLevel –TransactionTimeoutTransactionTimeout

ServiceBehaviorAttribute TransactionAutoCompleteOnSessionClose Automatikusan befejez egy befejezetlen tranzakciót, ha be van állítva Default: false Ha true-ra állítjuk és bármilyen okból a kapcsolat a tranzakció commitálódása előtt megszakad, akkor a tranzakciót megpróbálja teljesíteni. Ha false, akkor hiba esetén (a logikusabb) rollback-et hajtja végre Csak akkor lehet true, ha a kapcsolat session-orientált

ServiceBehaviorAttribute ReleaseDerviceInstanceOnTransactionComplete Meghatározza, hogy elengedje-e az erőforrásokat, ha a tranzakció befejeződött Default: true Egy új bejövő kérés egy új mögöttes példányt hozat létre, függetlenül attól, hogy az előző tranzakció fenntartott-e erőforrást, vagy sem A szolgáltató-példány felszabadítása a szerver belső művelete, és nem érint semmilyen egyéb példányt sem, amit a kliens hozatott létre

ServiceBehaviorAttribute TransactionIsolationLevel (ahogy sejthető) az izoláció szintjét határozza meg a szolgáltatónál Az attribútum értékének az IsolationLevel osztály statikus változói közül kell választaniIsolationLevel Ha a helyi izolációs szint különbözik az Unspecified-től, akkor minden bejövő tranzakció izolációs szintje meg kell, hogy egyezzen a helyileg beállított értékkel.

ServiceBehaviorAttribute TransactionIsolationLevel Ha ez nem teljesül, akkor a bejövő tranzakció elutasításra kerül, majd a sikertelenségről a kliens is értesül. Ha a TransactionScopeRequired igaz és nincs tranzakció folyamatban, akkor ez a tulajdonság határozza meg az izolációs szintet, amit a helyileg létrehozott tranzakciókban kell használni.TransactionScopeRequired

ServiceBehaviorAttribute TransactionIsolationLevel Ha az izolációs szint Unspecified-re van állítva, akkor a Serializable kerül használatra

ServiceBehaviorAttribute TransactionTimeout Az a lejárati idő adható meg vele, hogy az új tranzakcióknak mennyi idejük van a commit- álásra Ha egy félkész tranzakció esetében lejár az időkorlát, akkor automatikusan abortálódik Az időkorlát értéke nem haladhatja meg azt az időt, mely a tranzakicó létrehozásától, annak végrehajtásáig terjed (1 lefutás esetén) egy kétfázisos nyugtázási protokoll esetén

ServiceBehaviorAttribute TransactionTimeout Az időkorlát értéke mindig a –TransactionTimeout és a –transactionTimeout beállítások közül a kisebb lesz.

OperationBehaviorAttribute Egy metódus viselkedését határozza meg a szolgáltatói oldalon A műveletek végrehajtásának viselkedését lehet jelezni vele Értékének beállítása nincs hatással a Web Service Description Language (WSDL) service contract leírására fontos, gyakran használatos feature-ket valósít meg

OperationBehaviorAttribute TransactionScopeRequired Meghatározza, hogy egy metódus egy aktív tranzakció hatókörébe esik-e Default: false Ha az OperationBehaviorAttribute nincs beállítva egy metódushoz, akkor ez azt is jelenti, hogy ez a metódus nem tartozik tranzakcióhoz

OperationBehaviorAttribute TransactionScopeRequired Ha egy tranzakció hatáskör követel egy műveletet (végrehajtás szempontjából), akkor a tranzakció forrása a következő négy valamelyike lesz: 1.: Ha a tranzakció a klienstől indul, az eljárás a tranzakció hatáskörén belül jön létre, elosztott tranzakciók felhasználásával 2.: Egy sorszámozott átvitelnél a tranzakció visszafejti az üzenetsort. (Fontos, hogy ebben az esetben a tranzakció nem adatáramként továbbítódik)

OperationBehaviorAttribute TransactionScopeRequired 3.: Egyéni továbbítási mód céljából a TransportTransactionProperty értékét kell állítani 4.: Ha az első 3 nem teljesül, akkor egy új Transaction példány jön létre a hívó metódus függvényében Transaction

OperationBehaviorAttribute TransactionAutoComplete Meghatározza, hogy az ügylet, amelyben a metódus fut, automatikusan befejeződik, ha nem dobódnak lekezeletlen kivételek Ha true, és nem keletkezett kivétel, akkor a hívó eljárás automatikusan sikeresnek jelöli meg a tranzakciót Ha false, akkor a tranzakció a példányhoz csatolódik és csak akkor jelöli meg sikeresként, egy additívan meghívott metódus beszámol a tranzakció szolgáltató oldali sikeres lefutásáról, vagy ha ez a metódus explicite hívja meg a SetTransactionComplete eljárást.SetTransactionComplete

OperationBehaviorAttribute TransactionAutoComplete Ha bármelyik előbbi eljárás elbukik: –a tranzakció sohasem lesz sikeresként megjelölve, –a benne foglalt lépések kommittálatlanok maradnak, hacsak a TransactionAutoCompleteOnSessionClose attribútum nem lett megelőzőleg igazra állítva (ha igazra lett állítva az InstanceContextMode a PerSession értéket kell, hogy felvegye)

ServiceModel Transaction Configuration Három attribútum a tranzakciók szolgáltatássá való konfigurálására: –transactionFlow, –transactionProtocol, és –transactionTimeout.

transactionFlow beállítása A legtöbb előre definiált WCF kötés (binding) tartalmazza a transactionFlow és transactionProtocol attribútumokat A kötés beállítható úgy, hogy a bejövő tranzakciókat egy bizonyos endponint számára a meghatározott transactionFlow protokoll alapján kezelje A fenti két elemmel egyedi kötések készíthetőek

transactionFlow beállítása A transactionFlow attribútum definiálja, hogy egy tranzakció egy szolgáltatás végponton keresztül annak kötését használva adatfolyamként működjön-e

transactionProtocol beállítása Definiálja a tranzakció protokollt, hogy hogyan használja a szolgáltató endpoint- jait (amik pedig a kötéseket használják) A következő konfigurációs rész egy meghatározott kötéshez kapcsol egy adatfolyam típusú tranzakciót és a WS- AtomicTransaction protocoll használatát

transactionProtocol beállítása <binding name="test" closeTimeout="00:00:10" openTimeout="00:00:20" receiveTimeout="00:00:30" sendTimeout="00:00:40" transactionFlow="true" transactionProtocol="WSAtomicTransactionOctober2004" hostNameComparisonMode="WeakWildcard" maxBufferSize="1001" maxConnections="123" maxReceivedMessageSize="1000">

transactionTimeout beállítása

transactionTimeout beállítása A transactionTimeout határozza meg azt az időperiódust, amely alatt a tranzakciónak le kell zajlania A rá vonatkozó kritériumokat már láttuk... Értékében a legkisebb az összes time-out típusú tulajdonság közül

ADATFOLYAMOK A WCF nagyon rugalmas beállítási lehetőségeket kínál a tranzakció adatfolyammá történő beállítására A konfigurálás itt is attribútumokon keresztül történik

Adatfolyam beállítások A tranzakció beállítások az alábbi három érték együttesével: –A TransactionFlowAttribute meghatározott minden metódus számára a service contract-ban –A TransactionFlow binding tulajdonság a meghatározott kötésben –A TransactionFlowProtocol engedélyezi, hogy két különböző tranzakció protokoll közül válasszunk, amelyet az adatáram a tranzakcióhoz használ. A következőkben ezekről lesz szó.

Adatfolyam beállítások WS-AtomicTransaction protokoll Olyan scenairo-k számára hasznos, amikor egy műveletek közötti protokoll- stack használata elkerülhetetlen (műveletek közötti: saját protokoll egy third-party protokollal való kommunikációja)

Adatfolyam beállítások OleTransaction protokoll Olyan scenairo-k számára hasznos, amikor a WS-AT-nél jellemző protokoll- stack nem szükséges, és a szolgáltatás fejlesztője tudja, hogy a WS-AT szolgáltatás helyileg tiltott, vagy egy létező hálózati topológia nem képes támogatni a WS-AT-t.

Adatfolyam beállítások WS-AT vs. OleT TransactionFlow binding TransactionFlow binding property TransactionFlowProtocoll binding protocol Type of transaction flow MandatorytrueWS-ATA tranzakció csak együttműködő (interoperable) WS-AT formátumban folyhat MandatorytrueOleTA tr. csak a WCF OleT formátumban folyhat MandatoryfalseNem alkalmazhatóNem alkalmazható, mert ez egy helytelen konfiguráció AllowedtrueWS-ATA tr. valószínűleg WS- AT formátumban folyik

Adatfolyam beállítások WS-AT vs. OleT TransactionFlow binding TransactionFlow binding property TransactionFlowProtocoll binding protocol Type of transaction flow AllowedtrueOleTA tr. valószínűleg WCF OleT formátumú AllowedfalseBármilyen értékA tr. nem áramolhat NotAllowedBármilyen érték A tr. nem áramolhat

Adatfolyam beállítások üzenet feldolgozási eredmények Bejövő üzenetTransactionFlow setting Transaction headerMessage provessing result A tr. egyezik az elvárt protokoll- formával Allowed vagy Mandatory MustUnderstand == trueFeldolgozás A tr. nem egyezik meg MandatoryMustUnderstand == falseElutasítva, mert szükség van egy tr.-ra A tr. nem egyezik meg AllowedMustUnderstand == falseElutasítva, mert a header nem érthető A tr. bármilyen pr. formátumot használ NotAllowedMustUnderstand == falseElutasítva, mert a header nem érthető Nincs tr.Mandatory-Elutasítva, mert tr. kell Nincs tr.Allowed-Feldolgozás Nincs tr.NotAllowed-Feldolgozás

Adatfolyam beállítások Amíg minden metódus a szerződésben kaphat különböző tranzakció folyam követelményeket, a tranzakció folyam protokoll beállítása a binding szintjére terjed ki. Ez azt jelenti, hogy minden metódus, amit ugyanazon a végponton osztozik (amiből az is következik, hogy ugyanazon a binding-on), szintén osztozik ugyanazon a politikán, amely engedélyezi, vagy igényli az adatfolyamot (ugyanúgy, mint a közös tranzakció protokollt).

Adatfolyam engedélyezése metódus szinten Az adatfolyam előkövetelményei nem mindig egyeznek meg az összes metódus számára a service contract-ban Minden metódushoz saját folyamszabály- zás készíthető Ez a TransactionFlowAttribute által érhető el, mely definiál egy szintet, amelyben egy szolgáltató művelet egy tranzakció header-t fogad

Adatfolyam engedélyezése metódus szinten A fejlesztőnek meg kell jelölnie a szolgáltatásának a contract-ot megvalósító metódusát ezzel az attribútummal, ha engedélyezni szeretné a tr. adatáramlását Ez az attribútum a TransactionFlowOption nevű enumerációs struktúrából választhat magának értéket Default: NotAllowed

Adatfolyam engedélyezése metódus szinten Ha nem NotAllowed az értéke, akkor az adott metódus nem lehet egyirányú A fejlesztő ezt az attribútumot használhatja a metódus-szintű adatfolyam előkövetelményeinek vagy korlátozásainak meghatározására

Adatfolyam engedélyezése endpoint szinten A metódus-szintű adatfolyam beállítási lehetőséget kibővítve a TransactionFlow- Attribute és a WCF lehetőséget ad egy végpontokra definiálható konfigurációt, hogy az adminisztrátorok magasabb szinten tudják kezelni a tranzakciókat. Ezt a TransactionFlowBindingElemet teszi lehetővé, mellyel engedélyezni, vagy letiltani lehet a bejövő adatfolyamot egy endpoint binding beállításában

Adatfolyam engedélyezése endpoint szinten Ha a kötés tiltja az adatfolyamokat, de az egyik művelet a service contract-ban egy bejövő tranzakciót igényel, akkor egy kivétel dobódik még a szolgáltatás indításakor A legtöbb WCF által biztosított hagyományos kötés tartalmazza a transactionFlow és transactionProtocol attraibútumokat, amelyek lehetővé teszik a kötés beállítását a bejövő tranzakciók fogadására Egy admin, vagy egy fejlesztő tehát arra használhatja a tranzakciós adatfolyamokat, hogy beállítsa az adatáram előkövetelményeit, vagy korlátait a fejlesztéskor - a konfigurációs fájl használva

Biztonság A tranzakciók adatfolyamában az üzenetek kódoltságáról gondoskodni kell A tranzakciókban folyó adatokat, vagy annak részleteit olyan kívülálló entitásnak nem szabad látnia Ha egy WCF kliens ismeretlen, vagy megbízhatatlan web-szolgáltatáson ke-resztül küld adatokat, a hívó műveleteknek ezen a web- szolgáltatáson - ha lehetséges - el kell nyomniuk az aktuális tranzakciót. A következő példa azt mutatja be, hogy hogyan kell ezt megtenni:

Biztonság //client code which has an ambient transaction using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress)) { // No transaction will flow to this operation untrustedProxy.Operation1(...); scope.Complete(); } //remainder of client code

Biztonság Továbbá a szolgáltatókat úgy kell konfigurálni, hogy csak olyan bejövő tranzakciókat fogadjanak el a kliensektől, amelyek authentikáltak és authorizáltak. Egy bejövő tranzakciót csak akkor szabad elfogadni, ha az egy teljesen megbízható klienstől érkezett

Policy követelmények A WCF ilyeneket használ az adatfolyam- szabályzásra Megtalálhatóak a szolgáltató policy dokumentációjában, ami a contract-ok, konfigurációk és attribútumok összességé-ből generálódik. Ezt a kliens HTTP-n keresztül GET-tel, vagy WS-MetadataExchange kérés-válasz segítségével kérheti le A kliens feldolgozhatja ezt policy dokumentumot, hogy eldönthesse, milyen műveleteket támogat a szolgáltató, és azoknak milyen követelményeik vannak

Policy követelmények Az adatfolyamok Policy követelményei hatással vannak magára az adatfolyamra, azáltal, hogy specifikálják a SOAP header-eket, melyeket a kliens elküldhet a szolgál-tatónak egy tranzakció reprezentációja-ként Minden tranzakció header-je meg kell hogy legyen jelölve a MustUnderstand tulajdonsággal, mely true-ra van állítva Ha ez nem teljesül, akkor SOAP hibával elutasításra kerül

Policy követelmények Egyszerre csak egy tranzakciófüggő policy lehet jelen egy szimpla műveletben Azok a policy dokumentumok, melyekben több, mint egy tranzakció assertion (követelés) szerepel egy művelethez, helytelenek és a WCF elutasítja azokat Továbbá csak egy szimpla tranzakció szerepelhet egy port-típuson belül

WS-AtomicTransaction Ez egy együttműködő tranzakció-protokoll Lehetőséget nyújt elosztott tranzakciók Web- szolgáltatásonok keresztüli üzenet- továbbítására Együttműködő módon koordinálja a hete-rogén infrastruktúrával rendelkező tranzakciókat Kétfázisú commit-protokollt használ, amely automatikus választ készít elosztott alkalmazások, tranzakció managerek és resource managerek között

WS-AtomicTransaction A WS-AT WCF-beli implementációja magába foglal egy ú.n. MSDTC (Microsoft Distributed Transaction Coordinator) nevű tranzakció manager-be épített protokoll szolgáltatást A WS-AT használatával a WCF alkalma-zások képesek tranzakciókat áramoltatni más alkalmazásoknak, beleértve az együttműködő web-szolgáltatásokat, melyek harmadik fél által készített technológiákra támaszkodnak

WS-AtomicTransaction Amikor egy tranzakció egy kliens és egy szerver között áramlik, a használt tranzakció protokoll meg van határozva azon binding által, amit a szerver tár fel a kliens által kiválasztott endpointon Néhány WCF rendszer által biztosított kötés alapból az OleTransactions protokollt használják a tranzakció terjesztéséhez, míg másoknál ugyanott a WS-AT a default. Az adott kötésben adott tranzakció protokoll választása a programban módosítható

WS-AtomicTransaction A protokollválasztások hatásai: –Az üzenet header-jének a formátumát arra használják, hogy áramoltassák a tranzakciót a klienstől a szerver felé –A hálózati protokollt arra használják, hogy kétfázisú commit-protokollt futtassanak a kliens tranzakció managere és a szerver tranzakciói között (mindezt azért, hogy meghatározzák a tranzakció eredményét)

WS-AtomicTransaction Ha a szerver és a kliens is WCF-et használ, akkor nincs szükség a WS-AT-re Helyette használható a NetTcpBinding default beállítása a TransactionFlow attribútum engedélyezésével, amely így inkább az OleTransactions protokollt fogja használni. Ha mégis web-szolgáltatásokon keresztül áramoltat az alkalmazás, akkor muszáj WS-AT-t használni.