Concetti relativi a COM+ Compensating Resource Manager

È possibile usare COM+ Compensating Resource Manager (CRM) per integrare facilmente e rapidamente le risorse dell'applicazione con transazioni DTC (Microsoft Distributed Transaction Coordinator). Le risorse dell'applicazione possono votare sul risultato di una transazione e possono ricevere la notifica finale del risultato. Viene generato un log durevole in modo che le risorse dell'applicazione possano scrivere record che superano gli errori e CRM recupera questo file di log al riavvio dell'applicazione.

Un CRM è costituito dai due componenti seguenti:

  • CRM Worker. Questo componente esegue il lavoro principale di CRM specifico e implementa un'interfaccia specifica per l'attività che deve eseguire. L'infrastruttura CRM fornisce un'interfaccia al ruolo di lavoro CRM tramite cui il ruolo di lavoro CRM può scrivere record in un file di log durevole su disco. Il ruolo di lavoro CRM deve scrivere record nel log e renderli durevoli prima di eseguirne il lavoro in modo che, se si verifica un arresto anomalo, il ripristino può verificarsi correttamente. Il ruolo di lavoro CRM richiede sempre una transazione.
  • CRM Compensato. Questo componente viene creato dall'infrastruttura CRM al completamento della transazione. Implementa un'interfaccia definita da cui l'infrastruttura CRM può passare notifiche di completamento delle transazioni e i record di log scritti in precedenza dal ruolo di lavoro CRM.

COM+ CRM fornisce atomicità con notifiche transazionali e durabilità con il log CRM, ma non fornisce l'isolamento delle risorse. In un ambiente multithreading, è responsabilità dello sviluppatore CRM garantire che l'accesso alle risorse, da più ruoli di lavoro CRM o applicazioni esterne, venga serializzato durante una transazione.

Dopo che la transazione ha superato la fase di preparazione, i ruoli di lavoro CRM Crm e Crm Possono essere eseguiti simultaneamente. È possibile che il componente CRM Worker di una nuova transazione diventi attivo mentre crm compensato di una transazione precedente sta ancora elaborando la transazione precedente.

Durante gli errori prima del ripristino dell'applicazione server CRM, una transazione interrotta deve essere considerata attiva e non completata. Non dovrebbe essere possibile per i processi esterni accedere alle risorse che sono state modificate da questa particolare transazione prima del ripristino del processo del server CRM.

CRM definisce tre tipi di interfaccia per le funzioni CRM di base:

  • ICrmLogControl viene implementato nel clerk CRM e viene usato dal ruolo di lavoro CRM per scrivere record di log nel log. Può anche essere utilizzato dal CRM Compensato.
  • ICrmCompensator e ICrmCompensatorVariants vengono implementati in CRM Compensat. Queste interfacce vengono usate per recapitare le notifiche dei risultati delle transazioni e i relativi record di log associati al CRM Compensat. In genere, il CRM Compensat implementa solo una di queste interfacce, a seconda che sia necessario record di log non strutturati o strutturati. I record di log strutturati sono quelli compilati come raccolta di varianti e sono in genere utilizzati da Microsoft Visual Basic. I record di log non strutturati sono solo un buffer di byte e sono in genere usati da Microsoft Visual C++. Un CRM Compensato può implementare entrambe le interfacce di compensazione; Tuttavia, viene usato un solo record alla volta per recapitare i record di log.
  • Le interfacce di monitoraggio di COM+ CRM vengono usate per il monitoraggio dei CRL all'interno di un'applicazione server specifica. Per informazioni dettagliate sulle interfacce di monitoraggio, vedere INTERFACCE di monitoraggio COM+ CRM.

Gli argomenti seguenti in questa sezione forniscono maggiori dettagli sul servizio COM+ CRM:

COM+ Compensating Resource Manager Tasks