建立交易式用戶端
交易式用戶端是交易處理系統 (TPS) 元件,其使用資源管理員匯出的介面來存取資源,例如資源管理員所支援的資料庫。
一般而言,用戶端會建立交易、執行一組資料庫作業,然後認可交易以永久執行作業。 如果用戶端發生錯誤,它可以回復交易來移除交易的作業,而不是認可交易。
一般而言,使用核心模式 KTM 的交易用戶端必須針對每個交易執行下列工作:
建立交易對象。
呼叫 ZwCreateTransaction 會建立交易對象、提供物件控制碼,並將物件識別碼指派 (給用戶端可以傳遞至資源管理員以識別交易的 GUID) 。
取得交易對象的識別碼。
用戶端可以呼叫 ZwQueryInformationTransaction 來取得物件識別碼。
將交易對象的識別碼傳遞至資源管理員。
用戶端通常會呼叫資源管理員匯出的介面,以開啟資源管理員的通訊路徑,並將路徑與交易產生關聯。 例如,資源管理員可能會提供 CreateDataObject 常式,類似于 瞭解 TPS 元件 主題所描述的常式。
執行要包含在交易中的作業。
一般而言,用戶端會呼叫資源管理員的介面,以存取資源管理員的資源。 例如,資料庫管理員的用戶端可能會讀取和寫入資料庫。
認可或回復交易。
如果所有資源作業都成功,用戶端必須呼叫 ZwCommitTransaction ,讓作業永久完成。 如果作業失敗,用戶端必須呼叫 ZwRollbackTransaction ,而不是 ZwCommitTransaction。 例如,如果資料庫管理員的用戶端判斷一系列寫入作業的其中一個失敗,用戶端必須呼叫 ZwRollbackTransaction ,讓任何寫入作業都不會變成永久。
用戶端可以同步或非同步呼叫 ZwCommitTransaction 和 ZwRollbackTransaction 。 如果用戶端以同步方式呼叫這些常式,則在認可或復原作業完成之前,常式不會傳回。
如需如何認可和回復交易的詳細資訊,請參閱 處理交易作業。
關閉交易對象控制碼。
用戶端完成交易處理之後,必須呼叫 ZwClose 以關閉交易對象的控制碼
TPS 可能包含一個以上的資源管理員。 如果用戶端的交易包含多個資源的作業,例如兩個資源管理員支援的兩個資料庫,用戶端通常會執行下列動作:
為每個交易建立單一交易對象。
將交易對象的識別碼傳遞至每個資源管理員。
藉由呼叫每個 Resource Manager 的介面,在每個資料庫上執行作業。
如果所有作業都完成且沒有錯誤,或偵測到錯誤時回復交易,則認可交易。
如果您的 TPS 包含 較佳的交易管理員,交易式用戶端通常不會呼叫 KTM。 如需進階交易管理員及其用戶端的詳細資訊,請參閱 建立進階交易管理員。
交易式用戶端可以呼叫 ZwSetInformationTransaction 來設定交易特定資訊。 例如,用戶端可以設定交易的逾時值,或提供描述性字元字串。 用戶端可以呼叫 ZwQueryInformationTransaction 來擷取交易的相關資訊。 例如,用戶端可以呼叫此常式,以判斷交易是否已認可或回復。