共用方式為


建立交易式用戶端

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

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

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

  1. 建立交易物件。

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

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

    用戶端可以呼叫 ZwQueryInformationTransaction 來取得對象標識碼。

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

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

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

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

  5. 認可或回復交易。

    如果所有資源作業都成功,客戶端必須呼叫 ZwCommitTransaction ,讓作業永久完成。 如果作業失敗,客戶端必須呼叫 ZwRollbackTransaction ,而不是 ZwCommitTransaction。 例如,如果資料庫管理員的客戶端發現一系列寫入作業失敗,客戶端必須呼叫 ZwRollbackTransaction ,讓這些寫入作業不成為永久作業。

    用戶端可以同步或異步呼叫 ZwCommitTransactionZwRollbackTransaction 。 如果用戶端同步呼叫這些例程,則例程在認可或回復作業完成之前不會傳回。

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

  6. 關閉交易物件控制代碼。

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

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

  1. 為每個交易建立單一交易物件。

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

  3. 呼叫每個資源管理員的介面,對每個資料庫執行作業。

  4. 如果所有作業都未發生錯誤,則認可交易,或偵測到錯誤時回復交易。

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

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