精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入分析WCF事務投票實現方式

開發 開發工具
WCF事務投票的實現方法是一個比較簡單但是在實際應用中又非常重要的一個操作技術。在這里我們將會和大家一起解讀這一技術的具體應用。

我們知道事務是通過參與方進行WCF事務投票(Voting)來決定 "提交(Complete)" 或者 "回滾(Rollback)" 操作的。默認情況下,WCF 通過 OperationBehavior(TransactionAutoComplete = true) 來完成投票動作。(TransactionAutoComplete = true 是缺省值,不需要顯式聲明。)

我們將服務方法默認的 TransactionAutoComplete=true 改為 false,看看結果 。

  1. // ---- Service1 -----  
  2. [ServiceContract(SessionModeSessionMode=SessionMode.Required)]  
  3. public interface IService1  
  4. {  
  5. [OperationContract]  
  6. [TransactionFlow(TransactionFlowOption.Allowed)]  
  7. void Test();  
  8. }  
  9. public class MyService1 : IService1  
  10. {  
  11. [OperationBehavior(TransactionScopeRequired=true, 
    TransactionAutoComplete=false)]  
  12. public void Test()  
  13. {  
  14. string connStr = "server=(local);uid=sa;pwd=sa;database=temp";  
  15. using (SqlConnection conn = new SqlConnection(connStr))  
  16. {  
  17. conn.Open();  
  18. SqlCommand cmd = new SqlCommand("insert into [User] 
    ([name]) values (@name)",   
  19. conn);  
  20. cmd.Parameters.Add(new SqlParameter("@name", "ZhangSan"));  
  21. cmd.ExecuteNonQuery();  
  22. }  
  23. }  
  24. }  
  25. // ---- Service2 -----  
  26. [ServiceContract(SessionMode = SessionMode.Required)]  
  27. public interface IService2  
  28. {  
  29. [OperationContract]  
  30. [TransactionFlow(TransactionFlowOption.Allowed)]  
  31. void Test();  
  32. }  
  33. public class MyService2 : IService2  
  34. {  
  35. [OperationBehavior(TransactionScopeRequired = true, 
    TransactionAutoComplete = false)]  
  36. public void Test()  
  37. {  
  38. string connStr = "server=(local);uid=sa;pwd=sa;database=temp";  
  39. using (SqlConnection conn = new SqlConnection(connStr))  
  40. {  
  41. conn.Open();  
  42. SqlCommand cmd = new SqlCommand("insert into Account ([user], 
    [money]) values (@user, @money)",   
  43. conn);  
  44. cmd.Parameters.Add(new SqlParameter("@user", "ZhangSan"));  
  45. cmd.Parameters.Add(new SqlParameter("@money", 100));  
  46. cmd.ExecuteNonQuery();  
  47. }  
  48. }  
  49. }  
  50. public class WcfTest  
  51. {  
  52. public static void Test()  
  53. {  
  54. // ---- Host -----  
  55. AppDomain.CreateDomain("Server").DoCallBack(delegate  
  56. {  
  57. NetTcpBinding bindingServer = new NetTcpBinding();  
  58. bindingServer.TransactionFlow = true;  
  59. ServiceHost host1 = new ServiceHost(typeof(MyService1), 
    new Uri("net.tcp://localhost:8080"));  
  60. host1.AddServiceEndpoint(typeof(IService1), bindingServer, "");  
  61. host1.Open();  
  62. ServiceHost host2 = new ServiceHost(typeof(MyService2), 
    new Uri("net.tcp://localhost:8081"));  
  63. host2.AddServiceEndpoint(typeof(IService2), bindingServer, "");  
  64. host2.Open();  
  65. });  
  66. // ---- Client -----  
  67. NetTcpBinding bindingClient = new NetTcpBinding();  
  68. bindingClient.TransactionFlow = true;  
  69. IService1 client1 = ChannelFactory<IService1>.CreateChannel(bindingClient,   
  70. new EndpointAddress("net.tcp://localhost:8080"));  
  71. IService2 client2 = ChannelFactory<IService2>.CreateChannel(bindingClient,   
  72. new EndpointAddress("net.tcp://localhost:8081"));  
  73. using (TransactionScope scope = new TransactionScope())  
  74. {  
  75. try  
  76. {  
  77. client1.Test();  
  78. client2.Test();  
  79. scope.Complete();  
  80. }  
  81. finally  
  82. {  
  83. (client1 as IDisposable).Dispose();  
  84. (client2 as IDisposable).Dispose();  
  85. }  
  86. }  
  87. }  

運行結果表明事務無法提交,觸發 TransactionAbortedException 異常,顯示 "事務終止"。那么除了默認被稱之為 "聲明投票(Declarative voting)" 的方式外,我們還能怎么做?OperationContext 有個 SetTransactionComplete() 方法,允許我們在代碼中完成WCF事務投票行為。這種投票方式更加靈活,便于我們在代碼中做出更多的控制,被稱之為 "顯式投票(Explicit voting)"。

在上面兩個 Test() 方法的***一行,添加 "OperationContext.Current.SetTransactionComplete();",再次運行,事務被正確提交。

  1. [OperationBehavior(TransactionScopeRequired=true, 
    TransactionAutoComplete=false)]  
  2. public void Test()  
  3. {  
  4. // ...  
  5. OperationContext.Current.SetTransactionComplete();  
  6. }   
  7. ... 

接下來,我們設想另外一種情況。事務不由 Client 發起,在 Service1.Test() 調用 Service2.Test(),那么事務會是個什么樣子呢?Service1、Service2 的參數 "OperationBehavior(TransactionScopeRequired = true)" 決定了如果沒有外界傳入的環境事務,那么會自動創建一個根事務。所以 Service1.Test() 會創建一個根事務,而 Service2.Test() 會參與這個事務。可問題在于 Service.Test() 中并沒有顯示調用 Transaction.Complete,事務能被提交嗎?

  1. // ---- Service1 -----  
  2. [ServiceContract]  
  3. public interface IService1  
  4. {  
  5. [OperationContract]  
  6. [TransactionFlow(TransactionFlowOption.Allowed)]  
  7. void Test();  
  8. }  
  9. public class MyService1 : IService1  
  10. {  
  11. [OperationBehavior(TransactionScopeRequired=true)]  
  12. public void Test()  
  13. {  
  14. string connStr = "server=(local);uid=sa;pwd=sa;database=temp";  
  15. using (SqlConnection conn = new SqlConnection(connStr))  
  16. {  
  17. conn.Open();  
  18. SqlCommand cmd = new SqlCommand("insert into [User] 
    ([name]) values (@name)",   
  19. conn);  
  20. cmd.Parameters.Add(new SqlParameter("@name", "ZhangSan"));  
  21. cmd.ExecuteNonQuery();  
  22. }  
  23. InvokeService2();  
  24. }  
  25. public void InvokeService2()  
  26. {  
  27. NetTcpBinding bindingClient = new NetTcpBinding();  
  28. bindingClient.TransactionFlow = true;  
  29. IService2 client2 = ChannelFactory<IService2>.CreateChannel
    (bindingClient,   
  30. new EndpointAddress("net.tcp://localhost:8081"));  
  31. using (client2 as IDisposable)  
  32. {  
  33. client2.Test();  
  34. }  
  35. }  
  36. }  
  37. // ---- Service2 -----  
  38. [ServiceContract]  
  39. public interface IService2  
  40. {  
  41. [OperationContract]  
  42. [TransactionFlow(TransactionFlowOption.Allowed)]  
  43. void Test();  
  44. }  
  45. public class MyService2 : IService2  
  46. {  
  47. [OperationBehavior(TransactionScopeRequired = true)]  
  48. public void Test()  
  49. {  
  50. string connStr = "server=(local);uid=sa;pwd=sa;database=temp";  
  51. using (SqlConnection conn = new SqlConnection(connStr))  
  52. {  
  53. conn.Open();  
  54. SqlCommand cmd = new SqlCommand("insert into Account 
    ([user], [money]) values (@user, @money)",   
  55. conn);  
  56. cmd.Parameters.Add(new SqlParameter("@user", "ZhangSan"));  
  57. cmd.Parameters.Add(new SqlParameter("@money", 100));  
  58. cmd.ExecuteNonQuery();  
  59. }  
  60. }  
  61. }  
  62. public class WcfTest  
  63. {  
  64. public static void Test()  
  65. {  
  66. // ---- Host -----  
  67. AppDomain.CreateDomain("Server").DoCallBack(delegate  
  68. {  
  69. NetTcpBinding bindingServer = new NetTcpBinding();  
  70. bindingServer.TransactionFlow = true;  
  71. ServiceHost host1 = new ServiceHost(typeof(MyService1), 
    new Uri("net.tcp://localhost:8080"));  
  72. host1.AddServiceEndpoint(typeof(IService1), bindingServer, "");  
  73. host1.Open();  
  74. ServiceHost host2 = new ServiceHost(typeof(MyService2), 
    new Uri("net.tcp://localhost:8081"));  
  75. host2.AddServiceEndpoint(typeof(IService2), bindingServer, "");  
  76. host2.Open();  
  77. });  
  78. // ---- Client -----  
  79. NetTcpBinding bindingClient = new NetTcpBinding();  
  80. bindingClient.TransactionFlow = true;  
  81. IService1 client1 = ChannelFactory<IService1>.CreateChannel
    (bindingClient,   
  82. new EndpointAddress("net.tcp://localhost:8080"));  
  83. try  
  84. {  
  85. client1.Test();  
  86. }  
  87. finally  
  88. {  
  89. (client1 as IDisposable).Dispose();  
  90. }  
  91. }  

運行結果表明,事務被正確提交??磥磉@和客戶端使用 TransactionScope 必須顯式調用 Complete() 有所不同。同樣,如果將 Service2.Test() 設為 TransactionAutoComplete=false,在不調用 "OperationContext.Current.SetTransactionComplete();" 的情況下,也會觸發事務失敗異常。

以上就是我們為大家介紹的WCF事務投票的相關實現方法。

【編輯推薦】

  1. WCF MSMQ隊列基本概念簡述
  2. PDA訪問WCF實現重點在過程
  3. WCF標準終結點基本概念剖析
  4. WCF回調操作是雞應用技巧講解
  5. WCF元數據交換應用技巧分享
責任編輯:曹凱 來源: 豆豆網
相關推薦

2021-03-17 00:05:50

分布式事務提交

2010-09-07 14:21:22

PPPoE協議

2022-04-12 08:30:45

TomcatWeb 應用Servlet

2011-03-23 11:01:55

LAMP 架構

2010-03-05 13:38:13

Python數據轉換

2010-01-08 16:58:49

網管交換機

2010-03-08 14:53:48

Linux分區

2023-02-01 08:13:30

Redis內存碎片

2011-09-01 13:51:52

JavaScript

2025-09-16 10:57:31

2009-12-14 14:50:46

Ruby傳參數

2009-12-16 16:39:01

Visual Stud

2009-06-10 18:12:38

Equinox動態化OSGi動態化

2021-10-29 16:36:53

AMSAndroidActivityMan

2022-08-30 07:00:18

執行引擎Hotspot虛擬機

2011-09-13 09:08:22

架構

2018-12-18 10:11:37

軟件復雜度軟件系統軟件開發

2023-08-07 07:44:44

2021-04-13 12:55:06

SpringMVC解析器接口

2013-11-14 17:02:41

Android多窗口
點贊
收藏

51CTO技術棧公眾號

亚洲高清在线观看| 亚洲福利一区二区三区| 国产精品吴梦梦| 欧美日韩色视频| 国产成人一二| 精品视频全国免费看| 日本高清xxxx| 天堂影院在线| 久色婷婷小香蕉久久| 久久久视频免费观看| 韩国三级hd中文字幕| 日韩精品视频一区二区三区| 欧美日韩午夜剧场| 国产盗摄视频在线观看| 九九热视频在线观看| 大桥未久av一区二区三区中文| 日本精品视频网站| 精品少妇theporn| 色综合久久网| 精品视频—区二区三区免费| 国产又粗又猛大又黄又爽| 欧美舌奴丨vk视频| 亚洲成人中文在线| 在线视频一二三区| 99青草视频在线播放视| 久久综合久久综合九色| 成人av电影免费| 亚洲图片在线播放| 久久久xxx| 国外成人免费在线播放| 粉嫩av性色av蜜臀av网站| 精品国产一区二区三区久久久蜜臀 | 免费毛片一区二区三区久久久| 国产尤物视频在线观看| 可以免费看不卡的av网站| 久久露脸国产精品| 欧美精品久久久久性色| 亚洲成av人片乱码色午夜| 亚洲最新av在线| 欧美熟妇一区二区| 欧美sss在线视频| 欧美不卡123| 精品国产免费久久久久久婷婷| 在线观看欧美| 欧美日韩在线播放三区| 亚洲精品中文字幕无码蜜桃| 欧美成人免费电影| 色网站国产精品| 蜜臀av午夜一区二区三区| 麻豆视频在线观看免费网站黄| 亚洲综合视频网| 激情六月天婷婷| 影音先锋男人资源在线| 亚洲黄色小说网站| 国产精品一二三在线观看| av电影免费在线观看| 亚洲欧美电影院| 中国女人做爰视频| 在线观看电影av| 一区二区三区四区在线免费观看| 国风产精品一区二区| 日本色护士高潮视频在线观看| 一区二区在线看| 91午夜在线观看| 97人澡人人添人人爽欧美| 天天射综合影视| 国产一区亚洲二区三区| 青青热久免费精品视频在线18| 91久久精品一区二区| 日本a√在线观看| 国产精品国产亚洲精品| 日韩欧美卡一卡二| 中国一级特黄录像播放| 精品av一区二区| 日韩中文字幕亚洲| 久久一二三四区| 免费视频一区二区三区在线观看| 日韩免费视频在线观看| 一区二区久久精品66国产精品| 狠狠色丁香久久婷婷综合_中| 97se亚洲综合| 日韩av成人| 国产精品九色蝌蚪自拍| www.夜夜爱| 日韩电影网站| 欧美一二三四在线| 人妻体内射精一区二区三区| 欧美理论在线播放| 久热精品在线视频| 999这里只有精品| 免费成人在线网站| 2019国产精品视频| 黄色av网站在线免费观看| **欧美大码日韩| 国产亚洲欧美在线视频| 久久免费资源| 亚洲国内精品视频| 99精品中文字幕| 亚洲免费播放| 成人亲热视频网站| 日本电影一区二区在线观看| 亚洲日本在线a| 日韩毛片在线免费看| 韩国三级成人在线| 亚洲三级av在线| 校园春色 亚洲| 久久伊人亚洲| 激情久久av| 国产在线观看91| 在线日韩国产精品| 亚洲图片综合网| 99国产**精品****| 日本乱人伦a精品| 日韩在线观看视频一区| 亚洲欧美一区二区在线观看| 99久久久无码国产精品6| 日韩一区二区三区精品视频第3页| 国产午夜精品全部视频在线播放| 久久久久99精品成人片毛片| 久久精品国产**网站演员| 欧美日韩成人一区二区三区| 9999精品成人免费毛片在线看| 欧美日韩高清一区二区| 性欧美精品中出| 99国产精品| 国产乱码精品一区二区三区中文 | 国外成人在线视频| 国产哺乳奶水91在线播放| 中文字幕的久久| 亚洲人成无码www久久久| 久草在线综合| 久久久久久久999| 精品乱子伦一区二区| 国产精品国产自产拍高清av| 成年人小视频网站| 国产区精品区| 日本韩国在线不卡| 天堂а√在线8种子蜜桃视频| 伊人一区二区三区| 国产精品中文久久久久久| 小处雏高清一区二区三区| 国产精品吊钟奶在线| 国产黄在线播放| 色国产综合视频| 免费污网站在线观看| 亚洲在线国产日韩欧美| 精品久久久久亚洲| 妞干网免费在线视频| 亚洲国产毛片完整版| www..com国产| 91欧美一区二区| 能在线观看的av| 九九热线有精品视频99| 欧美最猛性xxxxx(亚洲精品)| 深夜影院在线观看| 一本大道av伊人久久综合| 亚洲av综合一区二区| 老妇喷水一区二区三区| 日韩影片在线播放| 男人天堂久久| 超薄丝袜一区二区| 亚洲AV无码一区二区三区少妇| 亚洲国产视频a| 久久久久麻豆v国产精华液好用吗| 亚洲三级国产| 奇米视频888战线精品播放| 97欧美成人| 久久人体大胆视频| 亚洲精品久久久久久无码色欲四季| 亚洲国产成人av好男人在线观看| 免费看黄色aaaaaa 片| 日韩影院在线观看| 综合一区中文字幕| 盗摄牛牛av影视一区二区| 欧美激情一二区| 青春有你2免费观看完整版在线播放高清| 91黄色小视频| 午夜精品一区二区三区视频| 成年人国产精品| 青青在线视频免费| 欧美精品观看| 欧美韩国日本精品一区二区三区| jizz欧美| 久久久久久久久久久av| 暖暖视频在线免费观看| 7777精品伊人久久久大香线蕉完整版| 激情五月婷婷小说| 久久精品夜夜夜夜久久| 亚洲制服在线观看| 美女黄网久久| 日产精品久久久久久久蜜臀| 在线视频亚洲专区| 99re在线国产| 精品成人免费一区二区在线播放| 久久99久久99精品免观看粉嫩| 四虎影视在线播放| 日韩一区二区三免费高清| 丁香六月婷婷综合| 亚洲黄色录像片| 日本综合在线观看| gogogo免费视频观看亚洲一| 蜜臀一区二区三区精品免费视频| 99亚洲一区二区| 自拍偷拍亚洲色图欧美| 中文精品一区二区| 国产成人免费电影| 亚洲精品毛片| 欧美在线中文字幕| 香蕉久久aⅴ一区二区三区| 亚洲日韩第一页| 日韩一区二区三区在线观看视频| 欧美一区二区网站| 日批视频免费观看| 精品国产老师黑色丝袜高跟鞋| 成人免费毛片xxx| 中文字幕免费不卡| av网站有哪些| 成人午夜视频网站| 欧美视频亚洲图片| 麻豆91在线播放免费| 日韩人妻精品无码一区二区三区| 国产精品激情电影| 国产日本欧美在线| 日韩久久综合| 日韩电影大全在线观看| 亚洲日产av中文字幕| 国产一区二区在线观看免费播放| 激情视频亚洲| 亚洲一区二区三区四区视频| 成人做爰免费视频免费看| 欧美在线视频一区| brazzers在线观看| 久久免费视频这里只有精品| 超碰在线免费播放| 超碰精品一区二区三区乱码| 日韩三级影院| 中文在线不卡视频| 91在线视频免费看| 中文字幕亚洲欧美日韩在线不卡 | 国产精品进线69影院| 四虎地址8848| 国产精品成人一区二区艾草| 1024手机在线观看你懂的| 欧美国产成人精品| 熟女少妇内射日韩亚洲| 亚洲国产精品99久久久久久久久| 卡一卡二卡三在线观看| 亚洲国产精品成人综合色在线婷婷| 亚洲精品色午夜无码专区日韩| 久久久.com| 国产精品久久免费观看| 国产精品国产三级国产普通话99| 极品美妇后花庭翘臀娇吟小说| 亚洲色图欧洲色图| 激情综合五月网| 婷婷丁香久久五月婷婷| 国产成人在线免费视频| 在线视频观看一区| 一卡二卡在线观看| 日韩精品一区二区三区蜜臀| 高清国产mv在线观看| 日韩av在线导航| 东热在线免费视频| 日韩一区在线视频| 午夜激情在线| 欧美中文字幕在线播放| 人人鲁人人莫人人爱精品| 国产精品美女免费| 精品国产亚洲一区二区三区大结局 | 国产a级片网站| 欧美亚洲网站| 国产精品拍拍拍| 国产精品一区二区在线看| 稀缺呦国内精品呦| 国产视频一区在线播放| 卡通动漫亚洲综合| 岛国av一区二区三区| 国产成人精品亚洲| 日韩一区二区在线看| 天天干天天爽天天操| 中文字幕亚洲无线码在线一区| а√中文在线8| 欧美最近摘花xxxx摘花| 亚洲一区二区av| 久久国产精品久久精品国产| 日韩精品1区| 欧美一级视频免费看| 美女任你摸久久 | 欧美国产成人精品| 国产在线拍揄自揄拍| 欧美中文字幕一区| www久久久com| 在线观看亚洲区| 黄页网站在线| 国产免费久久av| 青青草这里只有精品| 亚洲一区二区在线看| 国产日韩欧美三区| 亚洲天堂av一区二区三区| 久久女同精品一区二区| 青青草精品在线视频| 色悠悠久久综合| 亚洲欧美激情另类| 久久精品久久久久| 免费成人直播| 国产精品露出视频| 亚洲国产日韩欧美在线| 免费看a级黄色片| www.欧美日韩| 欧美精品久久久久性色| 欧美日韩国产经典色站一区二区三区 | 亚洲欧美激情视频| 久久不射影院| 91视频8mav| 久久国产精品亚洲人一区二区三区| 国产在线播放观看| 国产成人综合在线观看| 免费91在线观看| 日本高清不卡在线观看| 少妇高潮一区二区三区69| 欧美精品制服第一页| www.久久.com| 日本一区二区在线视频| 一本色道久久综合一区| 丰满少妇xbxb毛片日本| 一区二区三区日本| 国产a级免费视频| 中文字幕一区日韩电影| 日韩三区免费| 欧洲亚洲一区二区| 久久精品1区| 成人性生交大免费看| 欧美日韩亚洲视频一区| 色wwwwww| 97久久精品视频| 久久婷婷国产| 免费av观看网址| 91在线观看污| 四虎精品永久在线| 日韩av中文字幕在线| caoporn视频在线观看| 国产成人免费电影| 国产偷自视频区视频一区二区| 荫蒂被男人添免费视频| 婷婷一区二区三区| 午夜视频福利在线观看| 青青草原一区二区| 波多野结衣国产| 777xxx欧美| 永久免费网站在线| 成人永久免费| 亚洲美女一区| 99久久久无码国产精品性 | 中文字幕+乱码+中文乱码91| 在线午夜精品自拍| 亚洲伊人精品酒店| 天天成人综合网| 国产高清亚洲一区| 日本天堂在线视频| 亚洲精品资源美女情侣酒店| 日韩精品影院| 五月天综合婷婷| 成人午夜视频网站| 国产成人精品777777| 在线看福利67194| 国产精品欧美一区二区三区不卡| 九一免费在线观看| 91丨porny丨最新| 糖心vlog精品一区二区| 日韩网站在线观看| 亚洲日本va| www黄色在线| 亚洲美女视频在线观看| 四季av日韩精品一区| 国产精品电影网站| 欧美精品黄色| 国产jk精品白丝av在线观看| 欧美一区午夜精品| 深夜av在线| 中国一级黄色录像| 波多野结衣在线aⅴ中文字幕不卡| 黄色污污网站在线观看| 久久久国产一区二区三区| 开心激情综合| 99sesese| 婷婷国产v国产偷v亚洲高清| 日本最黄一级片免费在线| 国产精品xxxx| 免费观看久久久4p| 中日韩黄色大片| 久久九九精品99国产精品| 日韩成人一级| 在线一区二区不卡| 一本久久a久久精品亚洲| 麻豆视频在线观看免费网站| 国产精品二区三区| 奇米777欧美一区二区| 亚洲精品www久久久久久| 中文字幕亚洲综合| 在线日韩一区|