共用方式為


COM+ CRM 監視介面

CRM 基礎結構提供一組介面,可用來監視特定伺服器應用程式內的CRM。 若要存取監視介面,在伺服器應用程式內執行的元件必須先建立稱為CRM復原Clerk的特製化CRM Clerk。

在正常使用CRM時,交易應該會短暫存在,因此CRM背景工作和CRM補償器會短暫存在,通常最多只有幾秒鐘。 因此,監視介面的設計目的是要在特定時間點提供執行 CPM 狀態的快照集。 如果有任何 CPM 發生問題,監視介面就可以用來在麻煩的 CRM 上零,檢查其記錄檔記錄,並視需要中止其交易。

以下是三個CRM監視介面及其運作方式的描述。

介面 描述
ICrmMonitor
使用 ICrmMonitor::GetClerks,可以取得伺服器應用程式內目前作用中 CRM Clerk 集合的快照集。 從此,可以找到並查詢感興趣的特定CRM Clerk集合物件,包括其交易的目前狀態,以及CRM所寫入的記錄檔記錄。
當監視工具判斷感興趣的 clerk 時,它會呼叫 ICrmMonitor::HoldClerk 來取得該特定 clerk 上的 ICrmMonitorLogRecords 介面。 此時,監視工具會保存該 Clerk 的參考,如果交易完成,則 Clerk 會保留在記憶體中,而且在監視工具完成之前不會釋放。
ICrmMonitorClerks
使用此介面,可以流覽 clerk 集合物件,以取得 Clerk 集合的狀態相關信息。 此資訊包括 clerk 數目、Clerk 所使用的 CRM Compensator ProgID、註冊 CRM Compensator 時所提供的描述(使用 ICrmLogControl::RegisterCompensator)、交易單位工作標識符,以及活動標識符。 個別的 Clerk 也會由「clerk 實例 CLSID」唯一識別,這在一般意義上不是 COM CLSID,但只是唯一的 GUID,可識別此特定 Clerk 的存留期。
ICrmMonitorLogRecords
此介面可用來查詢交易的目前狀態、找出此CRM Clerk已寫入多少記錄檔記錄,以及取得實際的記錄檔記錄數據。 記錄檔記錄是從 ICrmMonitorLogRecords 介面提供的,其格式與原本撰寫的格式相同(使用 ICrmLogControl)。 此外, 可以選擇性地實作 ICrmMonitorLogRecords ,將記錄檔記錄轉換成可檢視的格式,以便使用一般監視工具呈現它們。
由於 ICrmMonitorLogRecords 是直接在 CRM clerk 上實作,因此您可以針對 ICrmLogControl 查詢Interface(也實作在 CRM clerk 上)。 然後,如有必要,這可以用來直接中止交易(ICrmLogControl::ForceTransactionToAbort)。

COM+ 補償 Resource Manager 概念