建立交易式用戶端

交易式用戶端是交易處理系統 (TPS) 元件,其使用資源管理員匯出的介面來存取資源,例如資源管理員所支援的資料庫。

一般而言,用戶端會建立交易、執行一組資料庫作業,然後認可交易以永久執行作業。 如果用戶端發生錯誤,它可以回復交易來移除交易的作業,而不是認可交易。

一般而言,使用核心模式 KTM 的交易用戶端必須針對每個交易執行下列工作:

  1. 建立交易對象。

    呼叫 ZwCreateTransaction 會建立交易對象、提供物件控制碼,並將物件識別碼指派 (給用戶端可以傳遞至資源管理員以識別交易的 GUID) 。

  2. 取得交易對象的識別碼。

    用戶端可以呼叫 ZwQueryInformationTransaction 來取得物件識別碼。

  3. 將交易對象的識別碼傳遞至資源管理員。

    用戶端通常會呼叫資源管理員匯出的介面,以開啟資源管理員的通訊路徑,並將路徑與交易產生關聯。 例如,資源管理員可能會提供 CreateDataObject 常式,類似于 瞭解 TPS 元件 主題所描述的常式。

  4. 執行要包含在交易中的作業。

    一般而言,用戶端會呼叫資源管理員的介面,以存取資源管理員的資源。 例如,資料庫管理員的用戶端可能會讀取和寫入資料庫。

  5. 認可或回復交易。

    如果所有資源作業都成功,用戶端必須呼叫 ZwCommitTransaction ,讓作業永久完成。 如果作業失敗,用戶端必須呼叫 ZwRollbackTransaction ,而不是 ZwCommitTransaction。 例如,如果資料庫管理員的用戶端判斷一系列寫入作業的其中一個失敗,用戶端必須呼叫 ZwRollbackTransaction ,讓任何寫入作業都不會變成永久。

    用戶端可以同步或非同步呼叫 ZwCommitTransactionZwRollbackTransaction 。 如果用戶端以同步方式呼叫這些常式,則在認可或復原作業完成之前,常式不會傳回。

    如需如何認可和回復交易的詳細資訊,請參閱 處理交易作業

  6. 關閉交易對象控制碼。

    用戶端完成交易處理之後,必須呼叫 ZwClose 以關閉交易對象的控制碼

TPS 可能包含一個以上的資源管理員。 如果用戶端的交易包含多個資源的作業,例如兩個資源管理員支援的兩個資料庫,用戶端通常會執行下列動作:

  1. 為每個交易建立單一交易對象。

  2. 將交易對象的識別碼傳遞至每個資源管理員。

  3. 藉由呼叫每個 Resource Manager 的介面,在每個資料庫上執行作業。

  4. 如果所有作業都完成且沒有錯誤,或偵測到錯誤時回復交易,則認可交易。

如果您的 TPS 包含 較佳的交易管理員,交易式用戶端通常不會呼叫 KTM。 如需進階交易管理員及其用戶端的詳細資訊,請參閱 建立進階交易管理員

交易式用戶端可以呼叫 ZwSetInformationTransaction 來設定交易特定資訊。 例如,用戶端可以設定交易的逾時值,或提供描述性字元字串。 用戶端可以呼叫 ZwQueryInformationTransaction 來擷取交易的相關資訊。 例如,用戶端可以呼叫此常式,以判斷交易是否已認可或回復。