Interfaces de supervisión de CRM de COM+

La infraestructura de CRM proporciona un conjunto de interfaces que se pueden usar para supervisar las CRM dentro de una aplicación de servidor determinada. Para acceder a las interfaces de supervisión, un componente que se ejecuta dentro de la aplicación de servidor debe crear primero un distribuidor de CRM especializado denominado distribuidor de recuperación de CRM.

En el uso normal de CRM, se espera que las transacciones sean de corta duración y, por lo tanto, los trabajadores de CRM y los compensadores crm existen durante un breve período de tiempo, normalmente solo unos segundos como máximo. Por lo tanto, las interfaces de supervisión están diseñadas para proporcionar una instantánea del estado de las CRM en ejecución en un momento dado. Si alguno de los CRM tiene problemas, las interfaces de supervisión se pueden usar para cero en el CRM problemático, para inspeccionar sus registros de registro y anular su transacción si es necesario.

A continuación se muestran las tres interfaces de supervisión de CRM y descripciones de cómo funcionan.

Interfaz Descripción
ICrmMonitor
Con ICrmMonitor::GetClerks, se puede obtener una instantánea del conjunto actual de distribuidores de CRM activos dentro de la aplicación de servidor. A partir de esto, se puede localizar y consultar un objeto de colección de distribuidores de CRM determinado, incluido el estado actual de su transacción y los registros escritos por el CRM.
Cuando la herramienta de supervisión ha determinado qué distribuidor es de interés, llama a ICrmMonitor::HoldClerk para obtener una interfaz ICrmMonitorLogRecords en ese distribuidor en particular. En este momento, la herramienta de supervisión contiene una referencia a ese distribuidor y, si la transacción se completa, el distribuidor se mantiene en memoria y no se libera hasta que se realiza la herramienta de supervisión.
ICrmMonitorClerks
Con esta interfaz, el objeto de colección clerk se puede examinar para obtener información sobre el estado de la colección de distribuidores en el momento en que se obtuvo. Esta información incluye el número de distribuidores, el ProgID del compensador crm utilizado por el distribuidor, la descripción proporcionada en el momento en que se registró el compensador de CRM (mediante ICrmLogControl::RegisterCompensator), el identificador de unidad de trabajo de transacción y el identificador de actividad. Los distribuidores individuales también se identifican de forma única mediante un "CLSID de instancia de distribuidor", que no es un CLSID COM en el sentido habitual del término, sino simplemente un GUID único que identifica a este distribuidor en particular durante su vigencia.
ICrmMonitorLogRecords
Esta interfaz se puede usar para consultar el estado actual de la transacción, averiguar cuántas entradas de registro ha escrito este distribuidor de CRM y obtener los datos de registro reales. Las entradas de registro se proporcionan desde la interfaz ICrmMonitorLogRecords en el mismo formato que se escribieron originalmente (mediante ICrmLogControl). Además, ICrmMonitorLogRecords se puede implementar opcionalmente para convertir las entradas de registro en formato visible para que se puedan presentar mediante una herramienta de supervisión genérica.
Dado que ICrmMonitorLogRecords se implementa directamente en el distribuidor de CRM, puede consultarInterface para ICrmLogControl (también implementado en el distribuidor de CRM). A continuación, se puede usar para anular directamente la transacción si es necesario (ICrmLogControl::ForceTransactionToAbort).

Conceptos de Resource Manager de compensación de COM+