TransactionFlow 屬性標註於契約介面,而非服務類別。BindingRequirement 限制繫結必須支援交易流動。Transaction.Current.Rollback():應直接重新拋出原例外或新例外,讓基礎設施自動回滾。IsolationLevel.Serializable。TransactionalBehavior 管理交易:
[Serializable]
[TransactionalBehavior]
class MyService : IMyContract { public void MyMethod() { ... } }
SaveStateInOperationTransaction = true 將交易傳播至存儲。ConcurrencyMode.Single:零成本獲得執行緒安全與交易存取。ConcurrencyMode.Multiple 時,必須啟用交易自動完成。ConcurrencyMode.Multiple 允許並發調用。ConcurrencyMode.Multiple,必須設 ReleaseServiceInstanceOnTransactionComplete = false:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple,
ReleaseServiceInstanceOnTransactionComplete = false)]
class MySingleton : IMyContract { ... }
SynchronizationContext.Post() 執行。FaultContract 僅標註於同步方法。