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

告訴教你如何在ADO.NET事務中登記資源

開發 后端
這里就ADO.NET事務的使用,持久登記、可變登記都有做出詳細的介紹,喜歡研究事物的朋友仔細閱讀,相信會給大家帶來技術上的提高的。

ADO.NET事務有很多值得學習的地方,這里我們主要介紹在事務中將資源登記為參與者,包括介紹持久登記等方面。參與事務的每個資源都由資源管理器進行管理,而后者的操作則由事務管理器進行協調。這一協調通過通知來執行,這些通知會提供給已通過事務管理器在事務中登記的訂戶。本主題介紹如何在事務中登記一個資源(或多個資源)以及不同的登記類型。在單階段和多階段中提交事務主題介紹如何在已登記的資源之間協調事務提交。

在ADO.NET事務中登記資源

資源若要參與事務,它必須在事務中進行登記。Transaction類定義了一組提供此功能的方法,這些方法的名稱以Enlist開頭。不同的Enlist方法對應于資源管理器可能具有的不同登記類型。具體來說,EnlistVolatile方法用于登記可變資源,而EnlistDurable方法則用于登記持久資源。

#T#資源管理器的持久性(反之為可變性)是指資源管理器是否支持故障恢復。如果資源管理器支持故障恢復,則它會在第1階段(準備階段)將數據保存到持久存儲區中;這樣,一旦資源管理器出現故障,它就可在恢復時在事務中重新登記,并根據從TM接收到的通知執行適當的操作。通常,可變資源管理器管理如內存中的數據結構之類的可變資源(如內存中的事務處理哈希表),而持久資源管理器則管理具有更持久的后備存儲區的資源(例如,其后備存儲區為磁盤的數據庫)。

為了簡單起見,在根據資源的持久性支持決定是使用EnlistDurable還是EnlistVolatile方法后,應為資源管理器實現IEnlistmentNotification接口,從而將資源登記為參與兩階段提交(2PC)。有關2PC的更多信息,請參見在單階段和多階段中提交事務。單個參與者可以多次調用EnlistDurable和EnlistVolatile來登記到其中的某一協議。

持久登記

EnlistDurable方法用于登記要作為持久資源參與事務的資源管理器。如果持久資源管理器在ADO.NET事務執行期間關閉,則它在重新聯機后,應在它作為參與者且未完成第2階段的所有事務中重新登記(使用Reenlist方法)來執行恢復,并在完成恢復處理后調用RecoveryComplete。有關恢復的更多信息,請參見執行恢復。

EnlistDurable方法都采用Guid對象作為其第一個參數。事務管理器使用Guid將持久登記與特定的資源管理器關聯。因此,資源管理器在重新啟動后必須統一使用同一Guid來標識自身,即使跨不同的資源管理器時也是如此;否則恢復操作就可能失敗。

EnlistDurable方法的第二個參數是對資源管理器所實現的用于接收事務通知的對象的引用。您所使用的重載會向事務管理器通知資源管理器是否支持單階段提交(SPC)優化。大多數情況下,應實現IEnlistmentNotification接口來參與兩階段提交(2PC)。但如果要優化提交過程,可考慮實現ISinglePhaseNotification接口來參與SPC。有關SPC的更多信息,請參見在單階段和多階段中提交事務和使用單階段提交和可提升的單階段通知進行優化。

第三個參數是EnlistmentOptions枚舉,該枚舉的值可以為None或EnlistDuringPrepareRequired。如果將該值設置為EnlistDuringPrepareRequired,則這種登記類型可在從事務管理器接收到準備通知時登記附加資源管理器。但是,您應清楚這種登記類型不適合執行單階段提交優化。

可變登記

管理可變資源(如緩存)的參與者應使用EnlistVolatile方法進行登記。此類對象可能無法獲取事務的結果,或者在系統出現故障后可能無法恢復它們所參與的任何事務的狀態。

如前面所述,資源管理器在管理內存中的可變資源時應進行可變登記。使用EnlistVolatile的優點之一就是不會強制執行不必要的事務升級。有關事務升級的更多信息,請參見事務管理升級主題。登記可變性意味著事務管理器處理登記的方式與事務管理器對資源管理器的預期行為之間存在差異。這是因為可變資源管理器不執行恢復。EnlistVolatile方法不采用Guid參數,因為可變資源管理器不執行恢復,并且不會調用需要Guid的Reenlist方法。

與持久登記一樣,無論使用哪種重載方法進行登記,都會向事務管理器指示資源管理器是否支持單階段提交優化。由于可變資源管理器不能執行恢復,因此在準備階段不會為可變登記寫入任何恢復信息。因此,調用RecoveryInformation方法會導致InvalidOperationException。

責任編輯:田樹 來源: 博客
相關推薦

2009-11-12 14:32:21

ADO.NET分布式事

2009-11-13 09:30:28

2009-11-13 14:29:13

ADO.NET Mer

2009-11-12 14:26:34

ADO.NET執行事務

2009-11-13 17:01:07

ADO.NET事務處理

2009-12-28 15:11:36

ADO.NET專家

2009-12-30 16:50:26

ADO.NET事務

2010-01-04 13:06:50

ADO.NET事務

2009-11-03 16:37:10

2009-09-14 13:37:25

LINQ ADO.NE

2009-11-04 15:05:45

ADO.NET事務

2009-11-11 14:04:14

ADO.NET連接池

2009-11-03 14:22:10

ADO.NET Exc

2011-05-20 11:31:07

ADO.NET

2009-11-13 10:53:54

ADO.NET Dat

2010-01-04 10:48:30

ADO.NET特色

2009-02-02 10:00:11

ADO.NETASP.NET

2009-11-12 14:03:03

ADO.NET數據集約

2009-12-31 14:46:29

ADO.NET Ent

2009-12-22 09:36:29

ADO.NET代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美一区二区三区在线看 | 日本一区二区在线视频 | 成人伊人网 | 成人在线观看亚洲 | 国产欧美日韩精品在线观看 | 精品国产一区二区三区久久久久久 | 99免费视频| 欧美激情在线播放 | a黄视频 | 免费v片| 成人精品一区亚洲午夜久久久 | 狠狠躁夜夜躁人人爽天天高潮 | 97精品超碰一区二区三区 | 男女视频免费 | 九九热在线精品视频 | 日韩在线播放av | 亚洲一区国产精品 | 久久亚洲一区二区三区四区 | 在线免费观看a级片 | 久久久久久黄 | 欧美h| 精品国产31久久久久久 | 偷拍亚洲色图 | 日本色婷婷| 天天插天天操 | 日韩亚洲一区二区 | 天堂一区在线 | 四虎永久免费黄色影片 | 狠狠av| 天天曰天天曰 | 国产精品视频久久 | 亚洲视频中文字幕 | 久久人人网 | 美女黄网 | 亚洲精品一区国产精品 | 国产一区二区三区久久久久久久久 | 亚洲午夜av | 久久91精品国产一区二区三区 | 一区二区成人在线 | 国产欧美日韩一区 | hitomi一区二区三区精品 |