Platform SDK: Transaction Server |
A transaction begun in one process can be propagated to another process. Resource managers built on a client/server architecture, have a server side and a client side. The server side enlists in a transaction so that it can participate in the two-phase commit. However, because the transaction (MS DTC transaction) might have been initiated on the client side, such resource managers use a mechanism to propagate a transaction from the client side to the server side. This mechanism is implemented entirely by MS DTC. See the Life of a Transaction: Exporting a Transaction topic for more detailed information.
The resource manager proxy (RM proxy) on the client side can provide a function which an application can call to request a resource manager to enlist in a transaction. The transaction (ITransaction *) to enlist in can be provided via a parameter to the enlist function. After obtaining the transaction to enlist in, the RM proxy uses the ITransactionExport interface to propagate the transaction to the transaction coordinator.
To export a transaction
After the resource manager server receives the transaction cookie, it invokes the ITransactionImport::Import method, providing it with the cookie that it had received from its proxy. This invocation translates the cookie to an ITransaction interface, and if it succeeds, then the resource manager also has an interface to the same transaction which the application client had obtained in step 1 of Exporting a Transaction earlier in this topic.