About Pooled Pipelines

Commerce Server 2000 supplies two pooled pipeline objects, one for non-transacted pipelines (PooledPipeline) and one for transacted pipelines (PooledTxPipeline). Their use is identical to that of the non-pooled pipeline objects MtsPipeline and MtsTxPipeline. The difference between the two sets of pipelines is that the pooled pipeline objects are registered under COM+ to take advantage of object pooling.

Each of the pooled pipeline objects maintains a table of pipelines. When a pipeline is loaded, a pooled pipeline object first looks in its table of pipelines to see if the pipeline is already loaded. If the pipeline is not loaded already, the pooled pipeline object loads the pipeline and adds an entry to its protected table of pipelines. When the Execute method is called, the pipeline is retrieved from the table and run.

The individual components of a pooled pipeline — if they are poolable — are created once, and then held by the pipeline in the object pool. To be poolable, pipeline components must be free-threaded and cannot maintain state information between executions. Pipeline components written in Microsoft Visual Basic are apartment threaded; they cannot be pooled. Non-poolable components can still be run within pooled pipelines. However, these components are created each time there is an Execute method call. When you create custom poolable pipeline components, you must add the Component Object Model (COM) category, CATID_POOLABLE, to the component to make it poolable.

Although pooled pipelines are recommended in all new sites, older pipeline objects should be used during debugging. Because pipelines are effectively cached, changes to pipeline configurations may not take effect until either Microsoft Transaction Server (MTS) or Internet Information Services (IIS) is re-started. The objects MtsPipeline and MtsTxPipeline can be used for debugging a new pipeline and the objects PooledPipeline or PooledTxPipeline can be used in the production site.

Ee809986.note(en-US,CS.10).gifNotes

  • Microsoft Application Center 2000 Component Load Balancing (CLB) can be used with Commerce Server pooled pipelines. Setup registers the Commerce Server pipeline as a COM+ package. In order to use it with CLB, you must go into the Component Services Microsoft Management Console (MMC) and change the Activation type of the package from "Library application" to "Server application." The pipeline object itself will be pooled by CLB, but pipeline components are not load balanced. This means that you cannot register any component that runs inside of a pooled pipeline as a COM+ application.

  • Setup also registers the Commerce Predictor Build Watcher component and the Commerce Event Logging components in COM+ packages. However, neither package should be used with CLB. These packages are created so that they can be used for administrative alert monitoring with distributed COM (DCOM), but there is no benefit to using them with CLB.


All rights reserved.