WCF Transaction各種類型及設(shè)置方法介紹
WCF通過其強(qiáng)大的功能優(yōu)勢(shì),為我們實(shí)現(xiàn)了一個(gè)全新的跨平臺(tái)的企業(yè)級(jí)互聯(lián)應(yīng)用平、解決方案。在WCF中實(shí)現(xiàn)多事務(wù)協(xié)調(diào),需要多方面的協(xié)調(diào)。既涉及到binding協(xié)議的設(shè)置,又涉及到ServiceBehavior和OperationBehavior的設(shè)置。
我們知道,關(guān)于binging protocal涉及到WCF Transaction的有2個(gè)值,即TransactionFlow=true|false。在ServiceBehavior-level,涉及到Transaction的是TransactionFlowOption,其值有Allowed,NotAllowed,Mandatory共3個(gè)option。在OperationBehavior-level,涉及到Transaction的是TransactionScopeRequired,其值有True|false共2個(gè)。 因此,將其全部組合起來的話,產(chǎn)生的可能配置為2*3*2=12種。
用一個(gè)簡單的公式表示為:
- Transaction = TransactionFlow[True|false](binding protocal)
- +TransactionFlowOption[Allowed|NotAllowed|Mandatory](ServiceBehavior)
- +TransactionScopeRequired[True|false](OperationBehavior)
實(shí)際上,在這12種可能的配置中,有4種是相互矛盾的,因此剩下8種可能的配置。 My god,要配置一個(gè)事務(wù)還有8種可能的配置 :#t#
為了便于記憶,我們將剩余8種可能的配置分為4類,分別為:客戶/服務(wù)型事務(wù)(client/service transaction),客戶型事務(wù)(client transaction),服務(wù)型事務(wù),非事務(wù)。
下面給出每種WCF中事務(wù)類型的典型配置
1.客戶/服務(wù)型事務(wù)
TransactionFlow=true(binding) + TransactionFlowOption=Allowed(ServiceBehavior) + TransactionScopeRequired=true(OperationBevior)
2.客戶型事務(wù)
TransactionFlow=true(binding) + TransactionFlowOption=Mandatory(ServiceBehavior) + TransactionScopeRequired=true(OperationBevior)
3 服務(wù)型事務(wù)
TransactionFlow=false(binding) + TransactionFlowOption=NotAllowed(ServiceBehavior) + TransactionScopeRequired=true(OperationBevior)
4 非事務(wù)
TransactionFlow=false(binding) + TransactionFlowOption=NotAllowed(ServiceBehavior) + TransactionScopeRequired=false(OperationBevior) 。簡單的講,如果發(fā)布一個(gè)service,不做任何WCF Transaction方面的設(shè)置,該Service就是nontransactional






