成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF分布事務(wù)保證數(shù)據(jù)完整性

開發(fā) 開發(fā)工具
WCF分布事務(wù)可以幫助開發(fā)人員協(xié)調(diào)多個服務(wù)之間的數(shù)據(jù)完整性,我們今天將會者對這一內(nèi)容的相關(guān)細節(jié)給出一個詳細的介紹。

我們作為一個開發(fā)人員,應該能夠順應技術(shù)的不斷發(fā)展,不斷的去掌握新技術(shù)。那么,對于WCF的掌握,就是其中一個非常重要的技能掌握。WCF分布事務(wù)提供了良好的支持,這使得我們可以協(xié)調(diào)多個服務(wù)之間的數(shù)據(jù)完整性。通過 TransactionFlowAttribute、ServiceBehaviorAttribute 和 OperationBehaviorAttribute 這三個特性,我們可以很好地控制事務(wù)的相關(guān)細節(jié)。#t#

TransactionFlowAttribute 的構(gòu)造參數(shù) "TransactionFlowOption transactions" 允許我們在強制事務(wù)(Mandatory)、允許參與事務(wù)(Allowed)和禁止事務(wù)(NotAllowed)間進行選擇。

ServiceBehaviorAttribute 提供了多個屬性參與事務(wù)控制。TransactionAutoCompleteOnSessionClose 指示當會話(Session)結(jié)束時是否自動提交事務(wù)(Complete); ReleaseServiceInstanceOnTransactionComplete 指示事務(wù)提交后是否釋放服務(wù)實例對象; TransactionIsolationLevel 用于設(shè)置事務(wù)隔離方式(isolation level); TransactionTimeout 用于設(shè)置事務(wù)超時時間。

OperationBehaviorAttribute 的 TransactionScopeRequired 屬性是 WCF分布事務(wù)所必需使用的,它表明服務(wù)方法必須在事務(wù)范圍(transaction scope)內(nèi)執(zhí)行。如果不添加該標記,則意味著服務(wù)方法不參與到事務(wù)中。TransactionAutoComplete 指示方法正常結(jié)束后自動提交事務(wù)。

上面這些特性屬性的使用有些特殊的細節(jié)要求,本文只是做個簡要的說明,有關(guān)更多內(nèi)容,請參考 MSDN 幫助文檔。

演示

下面的代碼中,我們使用新的程序域來模擬兩個服務(wù),客戶端通過 TransactionScope 來完成WCF分布事務(wù)調(diào)用。

步驟:

1. 使用 TransactionFlowAttribute 對契約方法進行標注,啟用事務(wù)。

2. 使用 OperationBehaviorAttribute 對服務(wù)方法進行標注,使用事務(wù)。

3. 將所有 Binding.TransactionFlow 設(shè)置為 true。

 

  1. [ServiceContract]  
  2. public interface IContract  
  3. {  
  4. [OperationContract]  
  5. [TransactionFlow(TransactionFlowOption.Mandatory)]  
  6. void Test();  
  7. }  
  8. public class MyService : IContract  
  9. {  
  10. [OperationBehavior(TransactionScopeRequired=true)]  
  11. public void Test()  
  12. {  
  13. string connStr = "Data Source=(local);Initial Catalog=tempdb;
    Integrated Security=True"
    ;  
  14. using (SqlConnection conn = new SqlConnection(connStr))  
  15. {  
  16. conn.Open();  
  17. SqlCommand cmd = conn.CreateCommand();  
  18. cmd.CommandText = String.Format("insert into table{0} 
    ([name]) values ('name1')",   
  19. AppDomain.CurrentDomain.FriendlyName == "Server1" ? "1" : "2");  
  20. cmd.ExecuteNonQuery();  
  21. }  
  22. }  
  23. }  
  24. public class WcfTest  
  25. {  
  26. public static void Test()  
  27. {  
  28. AppDomain.CreateDomain("Server1").DoCallBack(delegate  
  29. {  
  30. WSHttpBinding binding = new WSHttpBinding();  
  31. binding.TransactionFlow = true;  
  32. ServiceHost host = new ServiceHost(typeof(MyService));  
  33. host.AddServiceEndpoint(typeof(IContract), binding, 
    "http://localhost:8080/myservice");  
  34. host.Open();  
  35. });  
  36. AppDomain.CreateDomain("Server2").DoCallBack(delegate  
  37. {  
  38. WSHttpBinding binding = new WSHttpBinding();  
  39. binding.TransactionFlow = true;  
  40. ServiceHost host = new ServiceHost(typeof(MyService));  
  41. host.AddServiceEndpoint(typeof(IContract), binding, 
    "http://localhost:8081/myservice");  
  42. host.Open();  
  43. });  
  44. WSHttpBinding bindingx = new WSHttpBinding();  
  45. bindingx.TransactionFlow = true;  
  46. ChannelFactory<IContract> factory = new 
    ChannelFactory
    <IContract>(bindingx,   
  47. "http://localhost:8080/myservice");  
  48. IContract client = factory.CreateChannel();  
  49. ChannelFactory<IContract> factory2 = 
    new ChannelFactory<IContract>(bindingx,   
  50. "http://localhost:8081/myservice");  
  51. IContract client2 = factory2.CreateChannel();  
  52. try  
  53. {  
  54. using (TransactionScope scope = new TransactionScope())  
  55. {  
  56. client.Test();  
  57. //throw new Exception();  
  58. client2.Test();  
  59. scope.Complete();  
  60. }  
  61. }  
  62. catch  
  63. {  
  64. }  
  65. factory.Close();  
  66. factory2.Close();  
  67. }  

以上就是對WCF分布事務(wù)的相關(guān)介紹。

責任編輯:曹凱 來源: CSDN
相關(guān)推薦

2015-03-12 15:44:59

2022-03-22 12:56:53

垃圾數(shù)據(jù)數(shù)據(jù)完整性

2018-06-22 23:14:19

完整性監(jiān)測FIM信息安全

2009-09-25 11:03:35

PCI DSS數(shù)據(jù)完整數(shù)據(jù)安全

2015-06-08 13:48:15

數(shù)據(jù)庫數(shù)據(jù)完整性約束表現(xiàn)

2023-03-17 16:32:51

測試軟件開發(fā)

2016-12-08 09:03:07

大數(shù)據(jù)證據(jù)標準

2023-03-13 14:23:56

企業(yè)數(shù)據(jù)大數(shù)據(jù)

2023-05-23 11:14:59

2022-03-14 22:55:54

人工智能數(shù)據(jù)機器學習

2023-07-07 08:16:53

Redis持久化

2023-11-08 08:22:23

2010-06-01 18:11:25

Rsync 使用

2018-02-05 22:41:35

2023-05-22 11:26:45

2018-07-19 06:17:09

數(shù)據(jù)完整性數(shù)據(jù)安全網(wǎng)絡(luò)安全

2010-04-14 09:28:44

Unix操作系統(tǒng)

2022-02-23 23:38:48

嵌入式系統(tǒng)

2010-06-10 15:52:04

MySQL參照完整性

2013-12-05 13:11:33

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久国产精品网 | 丁香综合 | 国产激情偷乱视频一区二区三区 | 99热99| 97精品久久 | 国产精品成人一区二区 | 成人精品一区二区三区中文字幕 | 视频一区在线观看 | 成人妇女免费播放久久久 | 人人人人干 | 成人性视频在线 | 精品国产一区二区三区性色 | 国产在线激情视频 | 日本激情视频网 | 国产一级在线 | 自拍视频网站 | 欧美精品一区二区三区在线播放 | 成人影院av | 福利视频网 | 激情欧美日韩一区二区 | 国产日产精品一区二区三区四区 | 视频1区2区 | 国产精品一区在线观看你懂的 | 色婷婷精品 | 国产精品成人在线观看 | 亚洲免费视频在线观看 | 亚洲视频一区在线观看 | 91精品国产一区二区三区 | 综合久久色 | 99精品99| 欧美精品 在线观看 | 亚洲+变态+欧美+另类+精品 | av一二三区 | 成人精品在线观看 | 亚洲精品日韩在线 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 999精品视频 | 91久久久久久久久久久久久 | 日韩成人在线看 | 99爱国产| 日韩福利在线观看 |