commit in due fasi

Una determinata operazione della logica di business può comportare più programmi in esecuzione in più computer. In questa progettazione, la transazione non viene considerata completa a meno che tutti i programmi coinvolti completano correttamente le esecuzioni. Affinché questi programmi verifichino che tutti gli altri programmi che fanno parte della transazione abbiano completato le transazioni, devono usare il protocollo 2PC (Two-Phase Commit).

Il termine transazione (o uno dei suoi derivati, ad esempio transazionale), potrebbe essere fuorviante. In molti casi, il termine transazione descrive un singolo programma in esecuzione in un computer mainframe che non usa il protocollo 2PC. In altri casi, tuttavia, viene usato per indicare un'operazione eseguita da più programmi su più computer che usano il protocollo 2PC.

Il protocollo 2PC è così denominato perché usa le due fasi seguenti prima di eseguire il commit dell'operazione eseguita:

  • Fase 1: Preparare. In questa fase, ognuno dei programmi coinvolti nella transazione invia un messaggio a TP Manager, ad esempio Microsoft Distributed Transaction Coordinator (MS DTC), informando il tp manager che è pronto e in grado di eseguire la sua parte dell'operazione. Questa fase è nota anche come preparazione perché i programmi sono preparati per eseguire il commit delle modifiche o il rollback delle modifiche. Se tp manager riceve la conferma da ognuno dei programmi coinvolti, procede alla fase 2.

  • Fase 2: eseguire il commit o il rollback. In questa fase, tp Manager indica a ognuno dei programmi di eseguire il commit o il rollback di tutte le modifiche richieste come parte della transazione. Un rollback eseguito correttamente deve restituire il sistema allo stato originale.

Nota

Lo stato tra la fase 1 e la fase 2 è noto come stato di dubbio. Gli sviluppatori che usano .NET nelle applicazioni possono decidere quali parti dell'applicazione richiedono l'accesso a un tp e quali parti non lo fanno. Ti estende questa scelta anche al mainframe gestendo le chiamate che richiedono transazioni e chiamate che non lo fanno. Per le applicazioni che richiedono l'integrazione completa tra le transazioni con commit in due fasi basate su Windows e il livello di sincronizzazione basato su mainframe, TI offre tutte le funzionalità necessarie. Ti esegue questa operazione senza richiedere di modificare l'applicazione client, senza inserire codice eseguibile nel mainframe e con poche o nessuna modifica ai provider di servizi di configurazione mainframe. L'applicazione client non deve distinguere tra il componente TI e qualsiasi altro riferimento al componente.

La figura seguente mostra come un'applicazione client basata su Windows usa implicitamente Microsoft Distributed Transaction Coordinator (DTC) per coordinare il commit in due fasi di una transazione distribuita che coinvolge SQL Server e un TP CICS. DTC coordina le transazioni 2PC.

Immagine che mostra un'applicazione client che usa Transaction Integrator e DTC per coordinare un commit in due fasi tra SQL Server e un'applicazione CICS.
Applicazione client che usa Transaction Integrator e DTC per coordinare un commit in due fasi tra SQL Server e un'applicazione CICS

Nota

Transaction Integrator supporta solo 2PC durante la connessione a un mainframe tramite LU 6.2 (APPC) con l'elaborazione avviata da Windows. Quando ci si connette direttamente tramite TCP/IP non è disponibile alcun supporto 2PC tramite TI.

Applicazione client che usa TI e DTC

Le transazioni di commit in due fasi (2PC) coinvolgono diversi componenti. Per usare correttamente Transaction Integrator (TI), è necessario comprendere i componenti e la terminologia 2PC seguenti:

Livello punto di sincronizzazione 2
I provider di servizi di configurazione possono interagire tra loro usando il protocollo LU6.2 a uno dei tre livelli di sincronizzazione: livello di sincronizzazione 0, livello di sincronizzazione 1 o livello di sincronizzazione 2. Solo uno di questi tre livelli di sincronizzazione, Sync Level 2, usa il protocollo 2PC. Il livello di sincronizzazione 0 non ha integrità dei messaggi, mentre il livello di sincronizzazione 1 supporta l'integrità limitata dei dati.

TP Manager
Il gestore del programma di transazione (TP) è un servizio di sistema responsabile del coordinamento del risultato delle transazioni per poter ottenere l'atomicità. I responsabili tp assicurano che i gestori delle risorse raggiungano una decisione coerente sul commit o l'interruzione della transazione. Windows TP Manager è MS DTC.

Risincronizzare il servizio
Il servizio LU6.2 Resync è un componente di Host Integration Server che funziona con MS DTC per eseguire il ripristino automatico a uno stato coerente in seguito a errori in qualsiasi momento in una transazione 2PC. Il servizio LU6.2 Resync viene installato per impostazione predefinita durante l'installazione di Host Integration Server.

Gestione risorse
Resource Manager è un servizio di sistema che gestisce i dati durevoli. Le applicazioni server usano i gestori di risorse per mantenere lo stato durevole dell'applicazione, ad esempio un record di inventario disponibile, ordini in sospeso e crediti. I responsabili delle risorse lavorano in collaborazione con il gestore delle transazioni per fornire all'applicazione una garanzia di atomicità e isolamento (usando il protocollo 2PC). Microsoft SQL Server ™ e TI sono esempi di resource manager.

Vedere anche

Transazioni di Windows e transazioni mainframe
Elaborazione delle transazioni online