Conceptos de compensación de COM+ Resource Manager

Puede usar com+ Compensating Resource Manager (CRM) para integrar fácilmente y rápidamente los recursos de aplicación con transacciones del Coordinador de transacciones distribuidas (DTC) de Microsoft. Los recursos de la aplicación pueden votar sobre el resultado de una transacción y pueden recibir una notificación final de su resultado. Se genera un registro duradero para que los recursos de la aplicación puedan escribir registros que sobrevivan a los errores y CRM recupera este archivo de registro cuando se reinicia la aplicación.

Un CRM consta de los dos componentes siguientes:

  • Trabajo de CRM. Este componente realiza el trabajo principal del CRM específico e implementa una interfaz específica de la tarea que necesita realizar. La infraestructura de CRM proporciona una interfaz a CRM Worker a través de la cual el trabajador de CRM puede escribir registros en un archivo de registro duradero en el disco. El trabajo de CRM debe escribir registros en el registro y hacer que sean duraderos antes de realizar su trabajo para que, si se produce un bloqueo, la recuperación se pueda producir correctamente. El trabajo de CRM siempre requiere una transacción.
  • Compensador de CRM. La infraestructura de CRM crea este componente al finalizar la transacción. Implementa una interfaz definida por la que la infraestructura de CRM puede pasar notificaciones de finalización de transacciones y los registros escritos previamente por el trabajador de CRM.

Un CRM de COM+ proporciona atomicidad con notificaciones transaccionales y durabilidad con el registro de CRM, pero no proporciona aislamiento de recursos. En un entorno multiproceso, es responsabilidad del desarrollador de CRM asegurarse de que el acceso a los recursos, ya sea por varios trabajos de CRM o aplicaciones externas, se serializa mientras se encuentra en una transacción.

Una vez que la transacción ha superado la fase de preparación, el compensador de CRM y los trabajos de CRM se pueden ejecutar simultáneamente. Es posible que el componente crm Worker de una nueva transacción se active mientras el compensador crm de una transacción anterior sigue procesando la transacción anterior.

Durante los errores antes de la recuperación de la aplicación de servidor CRM, se debe considerar una transacción interrumpida activa y no completada. No debería ser posible que los procesos externos accedan a los recursos que ha cambiado esta transacción en particular antes de la recuperación del proceso del servidor CRM.

Crm define tres tipos de interfaz para las funciones básicas de CRM:

  • ICrmLogControl se implementa en el distribuidor de CRM y lo usa el trabajador de CRM para escribir registros en el registro. También puede ser utilizado por el compensador de CRM.
  • ICrmCompensator e ICrmCompensatorVariants se implementan en el compensador de CRM. Estas interfaces se usan para entregar notificaciones de resultados de transacción y sus registros de registro asociados al compensador de CRM. Normalmente, el compensador de CRM implementaría solo una de estas interfaces, dependiendo de si requería registros de registro no estructurados o estructurados. Los registros estructurados son aquellos que se compilan como una colección de Variantes y que suelen usar Microsoft Visual Basic. Los registros no estructurados son simplemente un búfer de bytes y normalmente lo usan Microsoft Visual C++. Un compensador crm puede implementar ambas interfaces de compensador; sin embargo, solo se usa una a la vez para entregar registros de registro.
  • Las interfaces de supervisión de CRM de COM+ se usan para supervisar las CRM dentro de una aplicación de servidor determinada. Para obtener información detallada sobre las interfaces de supervisión, consulte Interfaces de supervisión de CRM de COM+.

En los temas siguientes de esta sección se proporcionan más detalles sobre el servicio CRM de COM+:

Tareas de compensación de COM+ Resource Manager