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)。 |