18.2 Transaction Processing Services Protocol Concepts
The conceptual framework for the Transaction Processing Services protocols is defined in terms of the roles that are involved in the transaction life cycle that is specified in the [MS-DTCO] section titled Transaction Lifetime and described in section 18.1.3. An implementation of the transaction life cycle involves the following roles:
Application: A client application that wants to perform transacted work on a number of Resource Managers. The application creates a transaction, and thus, only it has the right to commit the transaction.
Application Service: A service that accepts requests to perform transacted work on local Resource Managers. An Application Service does not have the right to commit transactions.
Transaction Manager: A service that coordinates the lifetime of transactions, providing functionality for Resource Managers to enlist in these transactions, and provides functionality to enlist in transactions that are coordinated by remote Transaction Managers.
Resource Manager: A participant that is responsible for coordinating the state of a resource with the outcome of atomic transactions. For a specified transaction, a resource manager enlists with exactly one transaction manager to vote on that transaction outcome and to obtain the final outcome.
Management Tool: An application that monitors the health of a Transaction Manager and configures settings related to transaction coordination.
The communication between these roles is depicted in the following figures.
Figure 135: Basic communication between the roles defined in the transaction life cycle
In the most basic scenario, an application wants to perform work on a local Resource Manager. There is no propagation necessary, because the Resource Manager and application share a common local Transaction Manager.
Figure 136: Distributed communication between the roles defined in the transaction life cycle
In the distributed scenario, an application wants to perform work on a local Resource Manager and a remote Resource Manager. It is necessary for the transaction to be propagated from the application's local Transaction Manager to the remote Resource Manager's Transaction Manager.
Each core protocol that is listed in section 18.6 is used to support some part of the communications between the roles that are shown in the previous figures. The protocol that is most complete in this regard is the protocol that is specified by MSDTC Connection Manager: OleTx Transaction Protocol, which supports all the communications between the roles shown except between the Management Tool and the Transaction Manager, between the application and the Application Service, between the application and the Resource Manager, and between the Application Service and the Resource Manager.
The communication between the Application and Application Service, the application and Resource Manager, and the Application Service and Resource Manager is implementation specific. The expectation is that this will consist of a request for work to be done, along with all information that is necessary to enlist in the transaction, including the transaction identifier.
Except where noted in section 18.6, the protocols that are used for communication between these roles depend on the protocol that is specified by MSDTC Connection Manager: OleTx Multiplexing Protocol. This protocol supports both multiplexing multiple logical sessions over a single MSDTC Connection Manager: OleTx Transports Protocol session, and multiplexing multiple protocol messages into a single MSDTC Connection Manager: OleTx Transports Protocol message. The protocol that is specified by MSDTC Connection Manager: OleTx Transports Protocol in turn depends on RPC.
The abstract state machine that drives the transaction life cycle that is described in th [MS-DTCO] section titled Transaction Lifetime is defined only in [MS-DTCO]. An implementation of this state machine is necessary for any implementation of a Transaction Manager, and thus any implementation of MSDTC Connection Manager: OleTx Transaction Internet Protocol, Transaction Internet Protocol (TIP) Extensions, MSDTC Connection Manager: OleTx Transaction Protocol Logical Unit Mainframe Extension, or MSDTC Connection Manager: OleTx Management Protocol requires an MSDTC Connection Manager: OleTx Transaction Protocol implementation.
A common concept shared by all the roles is the transaction identifier that is used by the Transaction Manager to identify transactions in its Transaction Table. This data is used by all protocols to refer to a transaction, and to associate actions that are performed on the Transaction Manager with that transaction.